gpt4 book ai didi

c++ - 如何删除从基类继承的纯虚函数?

转载 作者:行者123 更新时间:2023-12-03 10:05:18 25 4
gpt4 key购买 nike

假设我有一个名为 Human 的基类. BabyAdultHuman 的子类. Human有一个功能run作为纯虚函数,我不想要 Baby继承run但如果我不覆盖 run , Baby将成为一个抽象类。

class Human{
public:
// Some human attributes.
virtual void run()=0;
};

class Adult: public Human{
public:
void run(){
// Adult running function
}
};

class Baby: public Human{
public:
void run()=delete; //error

// If I don't override `run` then Baby is marked as an abstract class

void crawl(){
// Baby crawling function.
}
};
如果我标记 run 会出错与 =delete
prog.cpp:19:10: error: deleted function ‘virtual void Baby::run()’
void run()=delete;
^~~
prog.cpp:6:22: error: overriding non-deleted function ‘virtual void Human::run()’
virtual void run()=0;
^~~
可能是一个不好的例子,但我想要的是继承除 run 之外的所有内容在 Baby .是否可以?

免责声明:我没有在任何地方实现它。只是出于好奇。

最佳答案

这不可能。考虑以下代码:

Human *CreateAPerson() {
return new Baby();
}

int main() {
Human *human = CreateAPerson();
human->run();
}
编译器无法知道 human->run()是非法的。

关于c++ - 如何删除从基类继承的纯虚函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65731280/

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