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]
У меня есть следующий код: < /p> [code]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 . Что -то еще, чем то, что я описываю?
Диспетчер MUTIPLE может быть достигнута в C ++ с помощью различных механизмов/методов. (Например, тройной диспетчер.)
Вот один из таких примеров.#include
#include
#include
Диспетчер MUTIPLE может быть достигнута в C ++ с помощью различных механизмов/методов. (Например, тройной диспетчер.)
Вот один из таких примеров.#include
#include
#include