Bjarne:我能防止别人继承我自己的类吗?

Bjarne:我能防止别人继承我自己的类吗?,第1张

Bjarne:我能防止别人继承我自己的类吗?,第2张

是的,但是你为什么这么做?这是两个常见的答案:

效率:避免我的函数被虚拟调用。

安全性:确保我的类不被用作基类(例如,确保我可以复制对象而不用担心发生意外)

根据我的经验,效率的原因往往是不必要的担心。在C++中,虚函数调用是如此之快,以至于在一个包含虚函数的类中实际使用时,与普通的函数调用相比,根本不会产生任何值得考虑的运行时开销。请注意,虚拟调用机制将仅由指针或引用使用。当直接通过对象名调用函数时,可以很容易地优化虚函数调用的开销。

如果确实需要密封一个类来防止虚调用,那么也许你应该先问为什么它们是虚的。我见过一些例子,性能很差的函数被设置为虚拟的,原因无非是“我们习惯这样做了”。

这个问题的另一部分,如何防止类由于逻辑原因被继承,有一个解决方案。遗憾的是,这个方案并不完美。它基于这样一个事实,即大多数继承的类必须建立一个虚拟基类。这是一个例子:

类可用;
class Usable _ lock {
friend class Usable;
private:
Usable _ lock(){ }
Usable _ lock(const Usable _ lock &){ }
};

类Usable:public virtual Usable _ lock {
//...
公共:

可用();
可用(char *);
//...
};

可用a;
class DD:公共可用{ };
DD DD;//错误:DD::DD()无法访问
/usable _ lock::usable _ lock()是私有成员

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » Bjarne:我能防止别人继承我自己的类吗?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情