gpt4 book ai didi

c++ - 私有(private)继承如何允许我创建对象?

转载 作者:行者123 更新时间:2023-11-28 06:19:13 25 4
gpt4 key购买 nike

我有简单的代码,我认为它会失败。

我私自继承了SealerShield,甚至Shield不是 friend ,我还是能够创建Shield 的对象。

class Sealer
{
public:

Sealer()
{
cout<<"base constructor;"<<endl;
}

};

class Shield : private Sealer
{
public:

void p()
{
cout<<"P gets called;"<<endl;
}
};

int main()
{
Shield d; //success here
d.p(); // here too
return 0;
}

这怎么可能?不应访问基类构造函数。不是吗?

我正在使用 Visual Studio 2012。

最佳答案

class Shield : private Sealer 表示 Sealer 中的所有内容都在 Shield 中保持私有(private);它不能在 Shield 之外或从它派生的类中看到。

它不会神奇地返回并使 Sealer 的构造函数成为私有(private)的,这样 Shield 就无法访问它。如果子类无法访问基类的任何内容,那么私有(private)继承的意义何在?它什么也做不了。

关于c++ - 私有(private)继承如何允许我创建对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29598406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com