当前位置: 首页 > news >正文

构造函数和初始化列表的关系

1构造函数

除了有函数名  函数参数  函数体  还可以有初始化列表。

2初始化列表

是以:开头,后跟一系列以逗号分割的初始化字符段。

1关系 

构造函数可以使用初始化列表  也可以不使用初始化列表(有些特殊场景下必须使用初始化列表)

2区别       

 以前认为构造函数是给对象进行初始化的,其实严格意义上函数体内的语句,只能叫做赋初值,而初始化列表才能叫做真正的初始化。

3初始化

是在一个变量定义的时候赋予的值才叫初始化。

2必须使用初始化列表的三种情况

1、引用成员变量

因为引用必须在定义的时候初始化,而构造函数体中的语句是赋值,所以应该使用初始化列表初始化


2、const修饰的成员变量

因为const修饰的成员变量也必须在定义的时候初始化,所以必须使用初始化列表


3、没有默认构造的自定义类型成员变量

因为使用构造函数一定不可避免的会调用自定义类型成员变量的默认构造,然而使用初始化列表可以避免使用默认构造函数,直接调用该成员变量的拷贝构造

class Time //声明一个Time类,类中有三个成员变量,和一个有参构造函数
{
public:Time(int hour, int minuter, int second, int day){_hour = hour;_minuter = minuter;_second = second;}private:int _hour;int _minuter;int _second;
};//声明一个Date类,类中有一个int类型成员变量、一个引用、一个const修饰、一个自定义类型
class Date
{
public:	Date(int year, int month, int day, Time& t):_year(year), _month(month), _day(day), _t(t) //初始化列表,_t(t)这个调用的是拷贝构造,为什么会调用拷贝构造,可以看本文【链接】{}private:int _year;int& _month; //引用const int _day; //const修饰Time _t; //没有默认构造的自定义类型
};int main()
{Time t(23, 43, 40); //实例化一个Time对象Date d(2023, 11, 14, t);return 0;
}

4初始化列表的好处

在没有默认构造的自定义类型成员变量的调用中,可以减少一次函数栈帧的调用

当有大量对象时,使用初始化链表的好处还是很多的,降低函数压栈带来的开销。

能用则用。

http://www.dtcms.com/a/435065.html

相关文章:

  • 济南网站优化建设局网站打不开
  • LabVIEW 系统稳定性计算
  • Rocky Linux 8 安装与配置 TigerVNC 服务完整操作文档
  • Testify Go测试工具包入门教程
  • 南阳网站建设xihewh成都网站建设公司有哪几家
  • **标题:发散创新:探索AR开发框架的核心技术**随着增强现实(AR)技术的飞速发展,AR开发框架成为了开发者们关注的焦
  • 网站推广的优势logo制作免费版
  • 汕头网站建设制作报价网片是干什么用的
  • 江西省住房和城乡建设厅的网站网站设计权限
  • 【人工智能通识专栏】第三十三讲:知识库的构建与应用
  • 、@RequestParam 取出文件项
  • llms.txt:为大模型打造的“网站说明书”
  • 浔川社团再创佳绩
  • wordpress js版本号郑州官网网站优化公司
  • 藏语自然语言处理入门 - 3 找关键词
  • TDengine 时序函数 SAMPLE 用户手册
  • 【动态规划DP:纸币硬币专题】P2840 纸币问题 2
  • wap网站分享到微信屏蔽 wordpress 插件下载
  • 网站com域名上不去cn能网址之家哪个好
  • Python基础入门例程79-NP79 字母转数字
  • 阿里滑块 最新版 分析
  • 独立开发者日常:宝塔面板使用教程
  • Redis面试题及详细答案100道(61-70) --- 性能优化篇
  • 网站快速收录土巴兔装修公司
  • 自助建网站软件平台中国交通建设监理协会网站打不开
  • 上海网站平台建设整站优化cms
  • .NET WPF 数据编辑器集合提供列表框控件
  • Python系统设计选题-49
  • 【开题答辩全过程】以 vue电影购票网站为例,包含答辩的问题和答案
  • 网站域名根目录自建网站阿里云备案通过后怎么做