假设我有一个名为
如果我使用
可能不是很好的例子,但我想要的是在
Human
的基类,Baby
和Adult
是Human
的子类。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.
}
};
如果我使用
=delete
标记run
,会导致错误。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;
^~~
可能不是很好的例子,但我想要的是在
Baby
中继承除了run
之外的所有内容。这是否可能?
Baby
中禁止使用run
的问题。我是c++
的新手,请详细解释并将其作为答案发布? - Ch3steRvoid run(){}
,在其中throw
一个错误,或者触发一个assert
。因为这是动态多态性,所以在编译时无法做任何事情。 - JHBonariusLSP
。 - Ch3steR=delete
,想知道是否可以抑制一个纯虚函数。 - Ch3steR