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

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

Аватара для Alan85

Забанен


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

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


Цитата pva:
в случае использования недостроенного класса »
наверно ты имеешь ввиду абстрактный класс.
Код: Выделить весь код
 class A  //абстрактный
{
  public:
  virtual void foo()=0;
}    ;
То тогда вылетит со свистом так как в в конструкторе C(A& a) {a.foo();} передается B которое еще не создано (после C будет ) что значит B::foot() еще неизвестно (не построена таблица виртуальных функций).
Но стоит только заменить класс A обратно с реализацией функции (она сразу вносится в таблицу виртуальных функций) все отлично - C(A& a) {a.foo();} хоть и принимает B но в таблице не найдя для нее реализации B::foo() передает выше - A::foo().
Я не утверждаю что это истина и верно на всех компиляторах хотя логически должно.

Отправлено: 23:25, 20-03-2009 | #9