先看看一个例子,基类Shape的默认构造函数不安排name空间,但子类Line的默认构造函数会根据规章自动产生name,这里我们假设name是private的,假如name不是private,问题会很简洁,也不会消失下述问题了。但在现实中,通常在基类的构造函数会初使化一些重要的private成员,或者构造函数比拟长,在子类中不想复制这些代码而盼望直接调用到基类的构造函数。一般我们可以在初使化式中直接构造基类,但有的时候,需要先计算出基类构造函数的参数,犹如本例中一样需要先产生一个autoName。
class Shape{
public:
Shape(LPCTSTR name){
this->name = new TCHAR[lstrlen(name) + 1];
lstrcpy(this->name, name);
} Shape(){
name = NULL;
} virtual void draw() = 0;
LPCTSTR getName() const{ return name;};
private:
LPTSTR name; ...


雷达卡


京公网安备 11010802022788号







