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

Search the boards