++ 2 : , . , .. . .
void f()
{
//...
class X
{
...
}
X s2;
}
X s3; //
, .
void f2() // ,
{ double x,y;
class X
{
... //x,y
}
]
.
. . ++ , . . , .
, , . .
class StrStack
{
class Link
{
class xste;
Link *next;
public:
Link(char *.ste,Link *_next):str(_str),next(_next)
{} //
char * GetStr(); //
Link *GetNext {return next;}
};
Link *head;
public:
StrSrack():head(0){}
~StrStack();
void Add(char *s);
char* Get();
int Empty() const {return!head;}
StrStack &operator+(char *str)
{
Add(str);
return *this;
}
};
//
inline char* StrStack::Link::GetStr()
{
return str;
}
//
StrStack::~StrStack()
{
while(!Empty())
{
Get();
}
}
void StrStack:: Add(char *str)
{
Link *p=new Link(str,head);
head =p;
}
char *StrStack:: Get()
{
if(!head) return ;
char *str=head->getstr();
Link *p=head;
head=head->getnext();
delete p;
}
////
void main()
{
StrStack s;
s.Add();
s.Add();
s+-;
...
while(!s.Empty())
return s.get();
}
- .
. . . , .
class Y
{
public:
int x,y;
};
2 : , Y::Y(){}. : Y (const &y);. . , return.
|
|
. . . (shallow copy).
( ) . , - . , .
- ,
- ,
- ,