У меня есть класс, который содержит некоторые функции (ни один из них не является виртуальным), а еще 2 класса наследуют этот класс. В обоих подклассах я переопределяю ту же функцию базового класса.Функция переопределения в C++ работает без «virtual»
После создания объектов всех трех классов в главном (расположенных в одном файле) я вызываю исходную функцию с объектом базового слоя и переопределенными функциями с объектами производного класса.
Я ожидал, что все 3 вызова функций будут запускать исходную функцию из базового класса (поскольку я не использовал «виртуальную» в любом месте кода), но на самом деле я получаю каждую версию этой функции, работающей в соответствии с классом в котором он был определен (3 разных версии).
У меня есть классы Base & производная следующим образом:
struct Base
{
void foo();
};
struct Derived : Base
{
void foo();
};
в основном:
int main()
{
Derived d;
d.foo();
}
Я думал d.foo() должен работать Base :: Foo(), если не используется ' виртуальная.
Пожалуйста, укажите соответствующий код на C++. Мы не можем понять весь ваш вопрос. –
Почему бы вам не показать * нам код вместо * описания * его? SSCCE (http://sscce.org/) будет идеальным. – NPE
Без кода, непонятно, что вы спрашиваете –