function — вызывается ли когда-нибудь абстрактный метод в c ++?

Допустим, у меня есть абстрактный класс с функцией под названием 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;
}

-2

Решение

Допустим, у меня есть абстрактный класс с функцией «print». И скажем, у меня есть другой класс, который наследует от класса отца и определяет функцию print. Правильно ли говорить, что функция «классы отца» print никогда не будет вызываться?

Нет.

Мои дебаты в том случае, когда у меня есть указатель «отец» на «сын». И я вызываю функцию печати, используя этот указатель. Если я не объявил функцию виртуальной, она должна пытаться использовать абстрактную функцию.

Хорошо, так что если это не так virtualбудет вызвана функция «отец» (или, по крайней мере, будет предпринята попытка сделать это). Это отвечает на ваш предыдущий вопрос.

Если это virtual, переопределение означает, что будет вызвана дочерняя функция. Тем не менее, все еще можно назвать базовую версию (например, из дочерней версии) как Father::print(), если дано определение для этой функции.

Но это не может, и вот где я застреваю.

Я не знаю, что вы подразумеваете под этим.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]