【发布时间】:2017-06-05 13:11:49
【问题描述】:
如果我们创建一个指向其子类对象的基类类的对象指针,那么我们使用虚拟关键字进行后期绑定 所以,在后期绑定的情况下,我们的代码是这样的:-
#include<iostream>
using namespace std;
struct A{
virtual void print() {
cout<<"function1";
}
};
struct B : public A{
void print(){
cout<<"function2";
}
};
struct C : public B{
void print(){
cout<<"function3";
}
};
int main(){
A* a = new C();
A* p = new B();
a->print();
p->print();
}
现在我的问题是:当我们在基类中使用 virtual 关键字时,在基类中创建的派生类的所有功能都将变为虚拟。 在多级继承中,有什么方法可以阻止类 c 的函数是虚拟的? 有什么办法可以打破这个虚函数链? 抱歉有任何错误,但我尽力了..☺️☺️
【问题讨论】:
-
来自
C::print()你可以打电话给B::print()有帮助吗? -
这听起来像XY problem。您要解决的真正问题是什么?
-
@Default 这不是重复的,OP 似乎仍然希望能够继承该类,但防止方法被覆盖。您链接到的问题的答案完全阻止了继承。
-
你说它不是重复的很有趣,@Pharap,因为该问题的公认答案与您对该问题的答案几乎完全相同。 (除非你假设 C++11;Nawaz 不假设。)
-
您在寻找final 吗?
标签: c++