码迷,mamicode.com
首页 > 编程语言 > 详细

c++类的构造函数

时间:2018-02-19 15:39:59      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:bsp   相同   构造   c++类   情况   data   空字符串   自己   指针   

1、构造函数

构造函数的任务是初始化类对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数。

  • 构造函数名与类名相同
  • 没有返回类型
  • 可以重载
  • 不能声明成const

(1)合成的默认构造函数

如果我们没有为类显式的定义构造函数,编译器会为我们隐式的定义一个默认构造函数(没有任何参数)又叫做合成的默认构造函数)这个构造函数按照下面规则初始化类的数据成员:

  1. 如果有类内初始值,用它来初始化成员(比如上面的units_sold=0,revenue=0.0)。类内初始值必须以=或{}表示。
  2. 否则,默认初始化(如bookNo被初始化为空字符串)。

(2)自定义默认构造函数

 一般情况下,类都需要定义一个默认构造函数,主要有以下三个原因:

  1. 一旦定义了其他构造函数,除非我们自己再定义一个默认构造函数,否则这个类将没有默认构造函数。
  2. 若类中含有内置类型或复合类型(比如数组和指针)的数据,如果没有提供类内初始值(有的编译器可能不支持类内初始值),使用合成的默认构造函数的值将是未定义的。
  3. 如果类中包含其他类的对象,而这个对象没有默认构造函数,那么编译器不能为类合成默认构造函数,我们必须自己定义一个默认构造函数。

Sales_data()=default;

函数名与类名相同,没有参数列表,参数列表后面加上=default要求编译器生成默认构造函数。

(3)构造函数初始值列表

Sales_data(const string & s,unsigned n,double p):bookNo(s),units_sold(n),revenue(p*n){}

冒号和花括号中间的部分就是构造函数的初始值列表。如果某个数据成员没有被初始值列表包括,这个值将以与合成默认构造函数相同的方式隐式初始化,对于没有初始值列表的构造函数,也是以同样的方式初始化。

2、构造函数初始值列表

(1)必须使用构造函数初始值列表的类型

 

c++类的构造函数

标签:bsp   相同   构造   c++类   情况   data   空字符串   自己   指针   

原文地址:https://www.cnblogs.com/StormWendy/p/8453812.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!