缺省构造函数

        缺省构造函数是指不需要用户指定实参就可以被调用的构造函数,这并不意味着它不能接受实参。只是意味着构造函数的每个参数都有一个缺省值与之关联。例如,下面的每个函数都表示一个缺省构造函数:

//每个都是缺省构造函数
Account::Account() { ... } 
iStack::iStack(int size=0){ ... } //存在一个参数,该参数有缺省值
Complex::complex(double re=0.0,double im=0.0){ ... }//存在两个参数,两个参数有缺省值

        很多的人常常会错误的认为,如果不存在缺省构造函数,则编译器会自动生成一个缺省构造函数,并将其应用在对象上,以初始化类的数据成员。但这不是绝对的。例如:

class Account
{
public:
	double *_name ;                 
	double _amount ;
	double _owner ;
};


       对于我们定义的Account类来说,这就不是真的:系统既没有生成缺省构造函数也没有调用它。对于含有类数据成员或继承来的比较复杂的类,这在部分上是对的:可能会生成一个缺省构造函数,但是它不会为内置或复合型的数据成员(指针或数组)提供初值。
      下面的这些都是不真实的:

1、一个类必须至少提供一个构造函数

      这是不真实的,一个类不一定要提供构造函数。如果该类含有数据成员,才需要提供一个或多个构造函数。

2、缺省构造函数是参数表中没有参数的构造函数

      这是不真实的,缺省构造函数是指不需要用户指定实参就可以被调用的构造函数,而不是指参数表没有参数的,如果参数表有参数,但是其有缺省值,这个构造函数也是缺省构造函数。

3、如果一个类不显示地提供缺省构造函数,则编译器会自动生成一个,用相关类型的缺省值初始化每个数据成员。

     这是不真实的。通常编译器并不会自动生成一个构造函数,即使生成了构造函数,也不一定会初始化成员变量。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值