. , , ,

,,,

,

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() .


string: struct string { char* p; int size; // , p string(int sz) { p = new char[size=sz]; } ~string() { delete p; } }; - ,

 

 

 

! , , , .
. , :