抽象类构造函数问题
- C/C++ code
enum Size{Mini, Medium, Full};class CVehicle{public: CVehicle(Size s = Medium, int n = 0) : size(s), nSpotsNeeded(n) {}protected: Size size; int nSpotsNeeded;};class CBus : public CVehicle{public: CBus() : CVehicle(Full, 5) {}};
请问怎么在没其他虚函数的情况下把基类CVehicle声明为抽象类。。构造函数显然不能成为虚函数,还有其他办法么?是否把析构函数变纯虚?
这种没多态动作的继承是不是不好?
[解决办法]
可以。
不过注意对于析构函数,即便是纯虚函数,也需要定义,否则没法odr-use,用了链接错误。(普通纯虚成员函数的定义倒是可有可无。)
[解决办法]
- C/C++ code
#include <iostream>using namespace std;enum Size{Mini, Medium, Full};class CVehicle{public: CVehicle(Size s = Medium, int n = 0) : size(s), nSpotsNeeded(n) {} virtual~CVehicle()=0;//完全可以把析构函数设置为纯虚函数,编译能够通过的。protected: Size size; int nSpotsNeeded;};class CBus : public CVehicle{public: CBus() : CVehicle(Full, 5) {}};void main(){}
[解决办法]