class Base {
public:
virtual void show() {
printf("Base\n");
}
//为什么需要声明为纯虚函数
//virtual float get_num() = 0;
virtual float get_num() { return 0;};
};
class B1 : public Base {
public:
B1():num(58){};
void show() {
printf("B1\n");
}
float get_num() {
return num;
}
private:
float num;
};
int main() {
Base* base = new B1;
//B1 b1;
//Base* base = &b1;
base->show();
float num = base->get_num();
printf("num=%f\n", num);
return 0;
}
做如下修改:
还有纯虚函数的类是不能直接生成对象的。如果不希望其直接生成对象化,而是只能生成子类的对象,那么就可以在里面放几个纯虚函数。
纯虚函数有没有实现也是看需求的。纯虚函数可以没有实现。但是如果有必要提供一个默认实现,那也可以有实现,供子类使用。