gpt4 book ai didi

c++ - 没有实例的基类?

转载 作者:行者123 更新时间:2023-12-01 15:11:03 25 4
gpt4 key购买 nike

我确定我不是第一个提出这个问题的人,但我找不到任何答案。

我想要的是一个基类,从中继承了多个类。继承的类都有一些共同的函数(有实现)和变量,并且有一些自己的变量和函数(每个派生类的不同函数)。我想在基类中组合的常见成员。问题是基类应该只是一个基类,我不希望基类有任何实例。我该怎么做?

如果上面的描述不清楚,也许这样更清楚:假设我想要一个基类哺乳动物和派生类,如人类、猿、蓝鲸等。我想创建人类、猿、蓝鲸的实例等,但不是哺乳动物。

我在某处读过您可以将构造函数设为私有(private),但我需要派生类的公共(public)构造函数

最佳答案

使基类抽象是您的解决方案。

如果您不想将任何基类方法设为纯虚拟,则可以将析构函数设为纯虚拟

#include <iostream>
using namespace std;

class IMammal //I for Interface
{
public:
virtual ~IMammal() = 0; //Makes the class abstract, Pure virtual destructor
};

IMammal::~IMammal() //Its necessary or ld will complain
{
cout << "In ~IMammal" << endl;
}

class Ape : IMammal
{

};

int main()
{
// IMammal m; // error: cannot declare variable ‘m’ to be of abstract type ‘IMammal’
Ape a;
}

关于c++ - 没有实例的基类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59907891/

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