Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Alan85

Забанен


Сообщения: 463
Благодарности: 91

Профиль | Цитировать


да, извини, согласен - давно классами в сях не баловался. А верхний пример будет откомпилирован и выведет A::foo(), B::foo() если немного подправить синтаксис (точки с запетой между реализациями). Только хоть используй virtual тут хоть нет - результат тот же.
Код: Выделить весь код
#include <iostream>
using namespace std;
class A
{
  public:
  void foo() {cout << "A::foo()\n";}
}    ;
class  C
{
 public:
  C(A& a) {a.foo();}
}   ;

class B : A, C
{
 public:
  B() : A(), C(*this){/**/}
  void foo() {cout << "B::foo()\n";}
}  ;
main()
{
  B b;
  b.foo();
  cin.get();
}

Отправлено: 19:25, 19-03-2009 | #6