今天遇到一个继承的问题。请回答下面问题:(已知 B 继承自 A)
先回答:
展示一些野生程序员的父类,让我写子类的时候一堆坑。
别人的父类:
class A
{
public:
A(int data = -1): value1(data) {}
int value1; // 正确初始的成员变量
char * value2;// 未初始化的成员变量,你一旦用了就报错
int value3;// 未初始化的成员变量,但有默认值0。
};
这种情况下,如果你的子类不调用,就会报错,而且是你的过错。
你的子类
class B : A
{
public:
// 不建议的构造
B(int data) : name(data) {
cout << *value2 << endl; // 报错,调用野指针
}
// 建议的构造
B(int data) : A(data), name(data) {
cout << *value2 << endl; // 也会报错,但责任不在你
}
int name;
};
其实就是父类和子类各自管好各自的成员。
有人喜欢这样定义父类:
class CRectangleData
{
public:
CRectangleData();
CRectangleData(const double &dStartPosX, const double &dStartPosY, const double &dWidth, const double &dHeight);
private:
double m_dStartPosX; //起点横坐标
double m_dStartPosY; //起点纵坐标
double m_dWidth; //宽度
double m_dHeight; //高度
};
不好: