我只是从这个很酷的blog获取信息,我们可以将派生对象强制转换为不可访问的基类子对象。另一方面,static_cast
不能用来做到这一点。
class Base {};
class Derived: private Base {};
void main()
{
Derived d;
Base* b = (Base*)&d; // compile passed.
Base* c = static_cast<Base*>(&d); // compile error.
}
将对象强制转换为private
基础子对象将破坏private
关键字的意思,它使私有对象可以被调用者访问。我假设有一些理由为什么C ++标准显式允许这个,并且“符合C语言”的原因对我不起作用,因为即使你可以模拟它也没有C语言的继承,这与这个问题无关
有人可以分享一些想法吗?