65,210
社区成员
发帖
与我相关
我的任务
分享
class BASE
{ private:
char c;
public:
BASE(char n):c('a'){cout < <n;}
virtual~BASE(){cout < <c;}
};
class DERIVED:public BASE
{ private:
char c;
public:
DERIVED(char n):BASE(n+1),c(n){cout < <n;} //BASE(n+1)这里让它知道了c的值为Y
~DERIVED(){cout < <c;}
};
int main()
{ DERIVED obj('X');
return 0;
}
输出为YXXa
问题1:不是先调用基类的构造函数吗 为什么基类的构造函数知道n为Y ?
问题2:为什么基类的构造函数输出n为Y,但其后的析构函数 输出为a? 基类的n 到底是a还是Y?
n为'X',n+1为'Y',析构函数输出a是因为你根本没将n+1赋给基类的数据成员c.