我知道在C++中,virtual double f()=0;是一个纯虚拟函数,那么virtual void f() {return 0.0};呢?这是一个纯虚函数吗?
发布于 2017-04-02 06:26:27
不是的。当且仅当使用= 0声明函数时,该函数才是纯虚函数。
请注意,可以为纯函数提供定义,但必须分两步完成:
struct X
{
virtual double f() = 0; // pure, X is abstract
};
double X::f() { return 0; } // definition用法:
X x; // error, X is abstract
struct Y : X
{
double f() override
{
return X::f(); // OK, calls pure virtual function
}
};
Y y; // OK, Y overrides X::f发布于 2017-04-02 06:27:10
纯虚函数是用=0标记的函数。它隐式地使类变得抽象。无法实例化抽象类。派生类必须覆盖继承的纯虚函数,否则它也将是抽象的。
https://stackoverflow.com/questions/43162600
复制相似问题