gpt4 book ai didi

c++ - 密封类实现查询

转载 作者:太空宇宙 更新时间:2023-11-04 12:21:50 25 4
gpt4 key购买 nike

我正在阅读 http://www2.research.att.com/~bs/bs_faq2.html 上的 C++ 常见问题解答,当我遇到这段代码来实现一个“密封”类时:

class Base{
public:
friend class A;
private:
Base(){cout<<"Base constructor called";}
};

class A : public virtual Base{
public:
A(){cout<<"A const called";}
};

class B : private A{};

int main(){
A a;
//B b;
return EXIT_SUCCESS;
}

我不明白如何通过使用 virtual 关键字来实现“密封”类效果。如果我删除 virtual 关键字,那么它就没有“密封”效果。为什么?

最佳答案

之所以可行,是因为由于虚拟继承的工作方式,B 必须构造 Base- 它不能,因为 Base 的构造函数是私有(private)的。只有 A 可以构造 Base。在普通继承中,B构造A,A构造Base,这很好,因为A可以构造Base,B可以构造A。

关于c++ - 密封类实现查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4545572/

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