class IInterface {
public:
virtual ~IInterface() {}
virtual void doSomething() = 0;
};
class Concrete : public IInterface {
public:
Concrete() : data{0} {doSomething();}
void doSomething() override {std::cout
Вызов виртуального метода во время строительного обхода виртуальной диспетчеры < /p>
< /blockquote>
[*] Что означает сообщение? Меня предупреждает, что статическая диспетчер Concrete :: dosomething ()
, сообщение уходит.
Это ub?
Скажи, что мы делаем бетон c; < /code>. Это то, что я думаю, это происходит: < /p>
память для объекта C < /code> выделена. < /Li>
Аннотация Конструктор класса называется. __Vptr указывает на чистую виртуальную функцию.
Вызывает конструктор Concrete . Инициализация любых нестатических членов происходит. Завершена инициализация, __vptr теперь указывает на реализацию Concrete dosomething () . Тело конструктора выполняется, и он должен вызвать переопределенный dosomething () .
- это что -то еще, чем что Я описываю происходящее? Сообщение LLVM версии 17.0.6
У меня есть следующий код: < /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
Вызов виртуального метода во время строительного обхода виртуальной диспетчеры < /p> < /blockquote>
[*] Что означает сообщение? Меня предупреждает, что статическая диспетчер Concrete :: dosomething () [/code], сообщение уходит.
Это ub? Скажи, что мы делаем бетон c; < /code>. Это то, что я думаю, это происходит: < /p> [list] память для объекта C < /code> выделена. < /Li> Аннотация Конструктор класса называется. __Vptr указывает на чистую виртуальную функцию. [*] Вызывает конструктор Concrete . Инициализация любых нестатических членов происходит. Завершена инициализация, __vptr теперь указывает на реализацию Concrete dosomething () . Тело конструктора выполняется, и он должен вызвать переопределенный dosomething () . [/list] - это что -то еще, чем что Я описываю происходящее? Сообщение LLVM версии 17.0.6
У меня есть шаблонный базовый класс с двумя виртуальными методами Begin() и end().
У меня также есть Derived1 класс, производный от базового класса, и
Derived2 класс, производный от класса Derived1.
Я переопределяю метод Begin() в первом...
Диспетчер MUTIPLE может быть достигнута в C ++ с помощью различных механизмов/методов. (Например, тройной диспетчер.)
Вот один из таких примеров.#include
#include
#include
Диспетчер MUTIPLE может быть достигнута в C ++ с помощью различных механизмов/методов. (Например, тройной диспетчер.)
Вот один из таких примеров.#include
#include
#include