Diff for ''

Revision 1
Time:
2024-06-13 22:28
Revision 3
Author:
black
Time:
2026-10-04 13:39
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
# dotaz - plus operator

<{ForumPost(poster="kaja", timestamp=2009-02-10 22:49:30)}>
proč se tady zavolá **Real::operator+ (const Base &) const** a ne ** Real::operator+ (const Complex &) const**? nějak do toho nevidim :(
  
proč to propadne až k Base &? chápu že reference na potomka se dá bez problémů převést na ref. na předka, ale proč to nějak "nechytí" už const Complex & ?
  
dík za případnou odpověď (možná se tu budu ptát ještě víc)
  
(hned druhá otázka u s0cketky .... sakra, nějak brzo jsem se zarazil)

    class Base
    {
    public:
     virtual Base operator+ (const Base &) const;
    }
    
    class Complex;
    
    class Real:public Base
    {
    public:
     virtual Base operator+ (const Base &) const;
     virtual Real operator+ (const Real &) const;
     virtual Complex operator+ (const Complex &) const;
    }
    
    class Complex:public Base
    {
    public:
     virtual Base operator+ (const Base &) const;
     virtual Real operator+ (const Real &) const;
     virtual Complex operator+ (const Complex &) const;
    }
    
    Real r;
    Complex c;
    Base &b = r;
    
    b = b + c;


<{/ForumPost}>

<{ForumPost(poster="kaja", timestamp=2009-02-11 00:00:24)}>
tak, budu sem házet další věci co mi nedávají smysl :)
např. otázka 6 ... wtf? nějak tomu nerozumím, ani se mi to nezbuilduje když dám copy-paste (a ten kód do main) ... jaký má význam tam takhle hodit template když to ... není template? a když to nechám jenom jako struct, tak mi gcc nadává že redefinovat struct víckrát nejde ... nerozumím, co chtěl básník říci

    template struct T {
     enum { v = 1 };
    }
    
    template struct T
    {
     enum { v = 2 };
    }
    
    template struct T
    {
     enum { v = 3 };
    }
    
    char a[ T::v];
    Jakou velikost bude mi pole a?
    [A] neni definovane
    [B] 2
    [C] 3
    [D] 1


<{/ForumPost}>

<{ForumPost(poster="OndraC", timestamp=2009-02-11 09:33:30)}>
Čau, na ten plus operátor zkus kouknout k s0cketce na 34. příklad... tam to je pěkně vysvětlený... co se týče tý další otázky, tak to sám nechápu...
<{/ForumPost}>

<{ForumPost(poster="svick", timestamp=2009-02-11 22:08:08)}>

 > kaja wrote:tak, budu sem házet další věci co mi nedávají smysl :)
 > např. otázka 6 ... wtf? nějak tomu nerozumím, ani se mi to nezbuilduje když dám copy-paste (a ten kód do main) ... jaký má význam tam takhle hodit template když to ... není template? a když to nechám jenom jako struct, tak mi gcc nadává že redefinovat struct víckrát nejde ... nerozumím, co chtěl básník říci

s0cketka to má špatně, když podíváš do zdrojáku té stránky, uvidíš, že tam má, T<něco>, ale prohlížeč to <něco> chápe jako tag a nezobrazí ho.
<{/ForumPost}>