gpt4 book ai didi

c++ - 如何禁止 C++ 派生类从基类派生,但允许从另一个派生类派生

转载 作者:IT老高 更新时间:2023-10-28 21:55:04 24 4
gpt4 key购买 nike

鉴于这种情况:

class GrandParent {};
class Parent : public GrandParent {};
class Child : public Parent {}; /// Ok
class Child : public GrandParent {}; /// Is it possible to force a compilation error?

最佳答案

GrandParent 构造函数设为私有(private),将 Parent 设为好友。

class GrandParent
{
friend class Parent;
private:
GrandParent() {}
// ...
};

或者,您可以通过将析构函数设为私有(private)来权衡 GrandParents 的多态破坏:

class GrandParent
{
friend class Parent;
private:
virtual ~GrandParent() {}
};

// Invalid Destruction:
GrandParent* p = new Parent;
...
delete p;

关于c++ - 如何禁止 C++ 派生类从基类派生,但允许从另一个派生类派生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37509693/

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