C++基础知识—关于默认构造函数的一切

本文探讨了C++中的默认构造函数,包括何时由编译器合成默认构造函数的情况,如成员类对象、基类、虚拟函数和虚拟基类的情况。默认构造函数用于在未提供显示初始化时创建对象,当类没有用户定义的构造函数时,编译器会提供一个默认构造函数,否则需要程序员自定义。合成的默认构造函数仅初始化具有默认构造函数的成员类对象和基类。
摘要由CSDN通过智能技术生成

C++条款—关于默认构造函数的一切

 

默认构造函数(defaultconstructor):

默认构造函数是在未提供显示初始值时,用来创建对象的构造函数。如果没有提供任何构造函数,则C++将自动提供默认构造函数,默认构造函数没有参数,因为声明中不包含值。同时,当且仅当没有定义构造函数时,编译器才会提供默认构造函数。为类定义了构造函数后,程序员就必须为它提供默认构造函数,如果提供了非默认构造函数,但没有提供默认构造函数,则在初始化对象时调用默认构造函数是会出错的:

Stack   ww;// 错误

定义默认构造函数有两种方法,一种是让所有的参数都有默认值,一种是通过函数重载的方式来定义另一个构造函数---一个没有参数的构造函数。

总而言之,如果程序没有提供任何构造函数,那么编译器会为程序定义一个默认构造函数;否则,必须自己提供默认构造寒素。默认构造函数可以没有任何参数,如果有,则必须给所有参数都提供默认值。

 

明白了这些之后,在进入深层次的分析。

 

什么时候编译器为合成一个default constructor.当编译器需要它的时候!被合成出来的constructor值执行编译器所需要的行动。在没有任何构造函数的类,在进行初始化此类的对象时,编译器合成了一个default constructor,但是这个合成出来的也不会为成员变量进行初始化。如果想为类中的成员变量进行初始化,就必须主动提供一个显示的default constructor.

所以,就产生了这么一说:对于classX,如果没有任何用户定义的构造函数,那么会有一个default

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值