如何解决我可以防止某些函数在C ++中被继承吗
| 样例代码#include <iostream>
using namespace std;
class Base
{
public:
virtual void Func()
{
cout << \"\\nIn base func\";
}
};
class Derived : public Base
{
public:
void Func()
{
cout << \"\\nIn derived\";
}
};
class Derived2 : public Derived
{
public:
void Func()
{
cout << \"\\nIn derived2\";
}
};
int main()
{
Base* lnewbase = new Derived2();
lnewbase->Func();
return 0;
}
例如,在上面的代码中,我不希望Derived的Func()被继承(在C#中密封),这就是为什么没有虚拟关键字的原因,尽管我知道在这种情况下它不会改变任何内容。在确保该函数仍然是公共方法的同时,有什么方法可以禁止该函数被继承?
解决方法
没有; C ++不等同于C#的
sealed
修饰符。
, 您无能为力。
一旦在基类中虚拟了一个函数,就无法摆脱它的这一方面。我只能想到几件事可以解决:
不要将其虚拟化;
在Derived
中创建一个新的,公开的,非虚拟的功能,它可以满足您的需求。
但是,无论哪种情况,Derived2
仍然可以制作自己的version4ѭ版本,这将给您带来同样的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。