sao units吧:c++构造函数问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/06 09:10:49
在类定义中有一个成员变量 此变量是一个自定义类型 并且此自定义类型的构造函数是没有参数的 这时有没有必要在类的构造函数中显式的调用此成员变量的构造函数为其初始化呢?
例如
class B
{
B(){};
}

class A
{
B b;
A();
....
}

A::A():b()//此处有没有必要?
{
....
}
是不是这样:无论是基本类型还是自定义类型 他们作为A类的成员 在A类实例化的时候 即使A的构造函数里什么也不写 也会被调用各自的构造函数 只是基本类型被构造后一般都是无意义的内容 所以经常需要手动初始化 而自定义类型自己的构造函数一般写得比较完善 所以大部分情况下可以不管他

没有必要,当你定义一个A类的对象时,编译器会为对象中的所有成员分配内存空间,包括这个A类中的成员b,等于编译器为你隐式地定义了这个成员b,会自动调用b的默认构造函数。当你的B类只有一个默认的构造函数时,没有必要调用它,除非你要选择其他重载的构造函数对b进行初始化,你才需要显示调用某一个确定的构造函数。

踏岸寻柳说的就是废话,和我一个意思,还说综合一下。。。

楼上说的都没有错,我来综合一下 ^_^

对于对象B而言:
1. 如果需要调用缺省的构造函数,就没有必要显式的初始化,因为在类A里面,只要定义了类B的实例b,就等于初始化了。
2. 如果需要调用的是另外的构造函数,就需要初始化。否则,对象b未必是你想要的那个。

有必要。如果没有对它初始化,那在调用的时候,有可能被引向一个未知的地址,或输出一个未知的数,有可能会出错。因此有必要对它进行初始化。