Posted By: miri (miri) on 'CZprogram'
Title: Re: C++, new, operatory...
Date: Wed Mar 26 14:52:37 1997
> 2) Kdyz mam dve tridy
> a provedu
> C1 *c1; C1 *c2 = new C2;
> c1 = c2;
Si to vyzkousej ;-):
Gcc provede prirazeni pointru...
Kdyz das *c1=*c2, tak to spadne.
Trochu sem si s tim hral, a dosel sem jeste na zajimavejsi vec:
class C1 {
public:
int a;
virtual C1& operator = (C1 &s) { printf("operator= C1n"); };
};
class C2 : public C1 {
public:
int b;
virtual C2& operator = (C2 &s) { printf("operator= C2n"); };
};
main()
{
C1 *c1 = new C2;
C1 *c2 = new C2;
*c1 = *c2;
}
Vyleze:
operator= C1
PROC?
Protoze ten c1 je typu C1 a vypada toa virtual C2& C2::operator = (C2& s) ma
jako parametr C2& s, coz neuspeje, takze se pouzije C1::operator=(C1& s)!
Jinymy slovy: Ten virtual C2::C2& operator = (C2 &s) VUBEC NEPRETEZUJE
virtual C1::C1& operator = (C1 &s), protoze ma jinej typ parametru!
Je to fakt, dival sem se do vypisu v assembleru, a C2 ma 2 polozky v VTM.
> Krysa
MIRI iS HERE iS MIRI iS HERE iS MIRI iS HERE iS MIRI iS HERE iS MIRI