
C++ 头文件中定义类型为类的数据成员
例如我有一个类A的头文件A.h,里面有个数据成员是类B的。ClassA{public:A();private:Bb;};然后我只是想声明下这个数据成员。等到A.cpp中的...
例如我有一个类A的头文件A.h,里面有个数据成员是类B的。
Class A{
public:
A();
private:
B b;
};
然后我只是想声明下这个数据成员。等到A.cpp中的A的构造函数时候再初始化b。
但是Compiler说我错了,说我没有默认的B的构造函数。(我B的构造函数需要1个参数的)
接下来是想问的问题:
1、是否就算我有B的无参数的构造函数,Compiler说不出错,但其实我在头文件里初始化了b,并不是在A的构造函数中?
2、是否这样应该写成B *b才能完成我想要的结果?
3、B *b是不是还需要析构函数中释放?
谢谢
这样说吧,我有一个a类,它有一个类型为b类的数据成员。我想在a类实例构造时初始化那个数据成员。头文件和实现文件里应该怎么写 展开
Class A{
public:
A();
private:
B b;
};
然后我只是想声明下这个数据成员。等到A.cpp中的A的构造函数时候再初始化b。
但是Compiler说我错了,说我没有默认的B的构造函数。(我B的构造函数需要1个参数的)
接下来是想问的问题:
1、是否就算我有B的无参数的构造函数,Compiler说不出错,但其实我在头文件里初始化了b,并不是在A的构造函数中?
2、是否这样应该写成B *b才能完成我想要的结果?
3、B *b是不是还需要析构函数中释放?
谢谢
这样说吧,我有一个a类,它有一个类型为b类的数据成员。我想在a类实例构造时初始化那个数据成员。头文件和实现文件里应该怎么写 展开
2个回答
展开全部
首先,头文件并不会参与编译过程,它只是起到数据定义的作用,所以编译错误只可能是你的编译器有问题,其次,一个类在没有实例化之前,是不占有内存空间的,所以也不可能产生错误,除非你的程序有语法问题
b不为指针,在A的构造函数中,b = *(new B());
b为指针,在A的构造函数中,b = new B();
后面那个new B()中B的构造函数的是否有参数可以根据需要改变一下
b不为指针,在A的构造函数中,b = *(new B());
b为指针,在A的构造函数中,b = new B();
后面那个new B()中B的构造函数的是否有参数可以根据需要改变一下
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |