class a
{
public: a(int p){};
~a(){};
};
class b
{
public:
b(int p):aa(p) /*为什么会显示aa is not base or member ,但是去掉:aa(k)就能建立aa对象??? 或者在构造函数外建立也可以用,如代码1 */
{
a aa(p);}
//protected:a aa(p) <-代码1
}
希望各位指导,谢谢。
...全文
13213打赏收藏
问一个构造和析构的小问题
class a { public: a(int p){}; ~a(){}; }; class b { public: b(int p):aa(p) /*为什么会显示aa is not base or member ,但是去掉:aa(k)就能建立aa对象??? 或者在构造函数外建立也可以用,如代码1 */ { a aa(p);} //protected:a aa(p) <-代码1 } 希望各位指导,谢谢。
b没有继承a,当然不行。
而第二种情况是声明一个a的公有(Public)对象,当然通过编译了!
修改如下:
class a
{
public: a(int p){};
~a(){};
};
class b:a
{
public:
b(int p):a(p) /*为什么会显示aa is not base or member ,但是去掉:aa(k)就能建立aa对象??? 或者在构造函数外建立也可以用,如代码1 */
{
a aa(p);}
//protected:a aa(p) <-代码1
}