,,,
string:
struct string {
char* p;
int size; // , p
string(int sz) { p = new char[size=sz]; }
~string() { delete p; }
};
- , . . .
:
void f()
{
string s1(10);
string s2(20);
s1 = s2;
}
, s1=s2 . f() s1 s2 . , string:
struct string {
char* p;
int size; // , p
string(int sz) { p = new char[size=sz]; }
~string() { delete p; }
void operator=(string&)
};
void string::operator=(string& a)
{
if (this == &a) return; // s=s;
delete p;
p=new char[size=a.size];
strcpy(p,a.p);
}
string , . f() :
void f()
{
string s1(10);
s2 = s1;
}
, . . string::operator=() , : p . , . , , . , , , , :
struct string {
char* p;
int size; // , p
string(int sz) { p = new char[size=sz]; }
~string() { delete p; }
void operator=(string&)
string(string&);
};
void string::string(string& a)
{
p=new char[size=a.size];
strcpy(p,a.p);
}
X X X(X&). , - . . X , , , :
class X {
// ...
X(something); // :
X(&X); // :
operator=(X&); // :
~X(); // :
};
, : . , - . . , . X(X&), :
string g(string arg)
{
return arg;
}
main()
{
string s = "asdf";
s = g(s);
}
, g() s "asdf". s arg : string(string&). g() string(string&); , s. , , string::~string() .
Copyright (c) 2024 Stud-Baza.ru , , , .