November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Thursday, March 31st, 2005 04:49 pm


Берём простейший код:
class B {
  public:
    void method(char c);
    void method(int i);
};

class M {
 int i;
};

class D: public B {
  public:
    void method(M);
};

int main() {
  D d;
  M m;

  d.method('c'); // не работает
  d.method(0); // тоже не работает
  d.method(m); // работает
}

И обнаруживаем, что для объекта производного класса методы базового нифига не вызываются (error: no matching function for call to `D::method(char)'), потому что они перекрыты одноимённым методом в производном.
И где, спрашивается, это ваше хвалёное наследование?
Да, если из D убрать одноимённый метод, то всё работает.
Кто знает, чем обусловлена такая странность?

Reply

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting