构造函数初始化列表

文章介绍了C++中构造函数初始化列表的重要性,特别是对于引用成员、const成员及无默认构造函数的自定义类型成员的初始化。初始化列表以冒号开始,可以是直接赋值或不带参数的构造。成员变量的初始化顺序与声明顺序一致,而非初始化列表中的顺序。文中提供了两种初始化列表的示例代码。
摘要由CSDN通过智能技术生成

初始化列表意义

构造函数体中的语句只能将其称作为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内可以多次赋值。

最为重要的是,下列这些特殊的类成员,必须放在初始化列表位置进行初始化:

1.引用成员变量

2.const成员变量

3.自定义类型成员(该类没有默认构造函数)

由上面的特殊类成员必须放在初始化列表可知:这些特殊的类成员肯定是在初始化列表里定义的,事实上,在C++中规定其他成员也是在初始化列表里定义的。

初始化列表的基本表现形式

构造函数初始化列表以一个冒号开始,接着是以逗号分隔的成员列表

第一种

第一种初始化是常见的赋值操作

student(int m,int n):shengao(m),tizhong(n)
	 {
	 	cout<<"初始化"<<endl; 
	 }

举例

代码举例:对应第一种
#include<iostream>
using namespace std;
class student
{
	private:
		double shengao;
		int tizhong;
	public:
		student(double m,int n):shengao(m),tizhong(n)
		{//student接收传进来的两个数m和n,然后m赋值给shengao,n赋值给tizhong 
		//之后private中的shengao和tizhong就分别有值了 
			cout<<"初始化"<<endl; 
		 } 
		 void show()
		 {
		 	cout<<shengao<<endl<<tizhong;
		 }
 } ;

第二种

第二种直接用初始化列表来处理。

student():shengao(1.75),tizhong(100)
{//student接收传进来的两个数,然后将两个数分别赋值给shengao,tizhong 
                      //之后private中的shengao和tizhong就分别有值了 
    cout<<"初始化"<<endl; 
 } 

举例

代码举例:对应第二种
#include<iostream>
using namespace std;
class student
{
	private:
		double shengao;
		int tizhong;
	public:
		student():shengao(1.75),tizhong(100)
		{//将两个数分别赋值给shengao,tizhong 
		//之后private中的shengao和tizhong就分别有值了 
			cout<<"初始化"<<endl; 
		 } 
		 void show()
		 {
		 	cout<<shengao<<endl<<tizhong;
		 }
 } ;

初始化顺序

成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后次序无关,例:
的先后次序无关,例:

语法说明
标题文本样式列表图片链接目录代码片表格注脚注释自定义列表LaTeX 数学公式插入甘特图插入UML图插入Mermaid流程图插入Flowchart流程图插入类图快捷键
代码片复制

class A
{
public:
	A(int a)
	{
		_a = a;
	}
private:
	int _a;
};
class Date
{
public:
	Date(int year = 1999, int month = 10, int day = 10, int a = 10)
		:_year(year)       //2
		, _month(month)    //4
		, _day(day)        //3
		, _a(a)            //1
	{}
private:
	A _a;
	int _year;
	int _day;
	int _month;
};

这里的初始化顺序就是 _a _year _day _month

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值