gpt4 book ai didi

C++/限制类的实例,其他类从它继承

转载 作者:行者123 更新时间:2023-11-30 02:04:35 25 4
gpt4 key购买 nike

我想用 C++ 创建一个类,其他类从它继承。但我想确保没有人能够从此类创建实例。

含义:

class Animal{
public:
virtual ~Animal() {}
};

class Fish: public Animal{
};

我想确保:

Fish* fish = new Fish();

有可能,但是

Animal* ana = new Animal();

不会。

我该怎么做?

最佳答案

最简单的解决方案是使 Animal 的构造函数 protected :

Class Animal{
protected:
Animal() {}
public:
virtual ~Animal() {}
};

由于 C++ 不提供对抽象类 的显式支持,但您可以将纯虚函数添加到您的类中以获得类似的效果。如果您没有合适的虚函数并希望将其设为纯虚函数,一个常见的习惯用法是将析构函数设为纯虚函数,然后在 header 之外提供一个实现。

Class Animal{
protected:
Animal() {}
public:
virtual ~Animal() = 0;
};

Animal::~Animal() {
// destructor code
}

关于C++/限制类的实例,其他类从它继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10431775/

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