栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++类的初始化列表

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++类的初始化列表

意义

初始化列表是类中构造函数的一部分,用于实例化类中变量时 赋初值。

需要先了解  构造函数的基本知识。CSDN-构造函数https://mp.csdn.net/mp_blog/creation/editor/124901019

用法

在函数头与函数体之间,用一个‘ :’列出变量,变量后用‘()’ 给出实例化该变量时要赋予的初值

用例:

class Date {
public:

    Date(int year, int month, int day)
        :_year(year), _month(month),_day(day)//初始化列表
    {
        ;
    }
private:
    int _year;
    int _month;
    int _day;
};
与在函数体内初始化的区别

初始化列表 实在实例化,也就是为变量开辟空间后,立刻赋予初始值。

类似于 

int a=10;//实例化时赋予初始值

而在构造函数体内初始化 ,则是先为变量开辟空间,后赋予值。

类似于

int a;//先为变量开辟空间
a=10;//后赋予值

常见的使用场景 1.调用类中 自定义类型成员的构造函数
#include
class a {
public:
    a(int val,int date) {
        _val = val;
    }
private:
    int _val;
    int _date;
};
class  A {
public:
    A(int val = 1) 
        :ma(5,4)
    {
        _val = val;
    }
    int _val;
    a ma;
};

因为 class a没有默认构造函数,需要主动传参,而构造函数只能在实例化对象的时候调用,并且要先实例化成员变量才会进入class A的构造函数体内,所以,只能使用class A的初始化列表来调用class a的构造函数 初始化A的 成员变量ma。 

2.类中 const修饰的成员变量
#include
class A {
public:
	A(int val):_val(val){}
	const int _val;
};
int main() {
	A a (2);
	std::cout << a._val;
	return 0;
}

具有常属性的变量需要在实例化时赋初值

3.类中 引用类型的成员变量
#include
class A {
public:
	A(int val):_val(val),mval(_val){}
	const int _val;
	const int& mval;
};
int main() {
	A a (2);
	std::cout << a.mval;
	return 0;
}

以上这就是初始化列表非常典型的使用场景。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/965447.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号