Допустим, у меня есть абстрактный класс с функцией print
.И скажем, у меня есть другой класс, который наследует от старшего класса и определяет функцию print
.Правильно ли говорить, что функция старших классов print
никогда не будет вызвана?Мои дебаты в том случае, когда у меня есть указатель старшего на ребенка.И я вызываю функцию print
, используя этот указатель.Если я не объявил функцию virtual
, она должна попытаться использовать абстрактную функцию.Но это не может, и вот где я застреваю.Заранее спасибо.
Редактировать: я добавил пример.Спасибо за это предложение, так как оно решило мой вопрос.Нет такого понятия, как не виртуальный абстрактный метод.
// Example program
#include <iostream>
using namespace std;
class A{
public:
void print()=0;//I have to add virtual before declaring function
};
void A::print(){
cout<<"1"<<endl;
}
class B: public A{
public:
void print(){cout<<"2"<<endl;}
};
int main(){
B b;
b.print();
A* a=&b;
a->print();
b.A::print();//here I called the abstract method
return 0;
}