Вызовите виртуальный метод во время строительства обходит виртуальную диспетчерскую C ++ [Duplicate]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Вызовите виртуальный метод во время строительства обходит виртуальную диспетчерскую C ++ [Duplicate]

Сообщение Anonymous »

У меня есть следующий код: < /p>

Код: Выделить всё

class IInterface {
public:
virtual ~IInterface() {}
virtual void doSomething() = 0;
};

class Concrete : public IInterface {
public:
Concrete() : data{0} {doSomething();}
void doSomething() override {std::cout 
< /ul>
Скажите, что мы делаем бетон c; < /code>. Это то, что я думаю, это происходит: < /p>
a) память для объекта C выделяется.
b) Конструктор абстрактного класса называется. __Vptr < /code> указывает на чистую виртуальную функцию.
c) конкретный конструктор вызывается. Инициализация любых нестатических членов происходит. Инициализация завершена, __vptr  теперь указывает на реализацию Concrete Dosommet. Тело конструктора выполняется, и он должен  вызвать переопределение dosomhething . 
Что -то еще, чем то, что я описываю?  

Подробнее здесь: [url]https://stackoverflow.com/questions/79432304/call-to-virtual-method-during-construction-bypasses-virtual-dispatch-c[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»