广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++示例讲解初始化列表方法
  • 574
分享到

C++示例讲解初始化列表方法

2024-04-02 19:04:59 574人浏览 薄情痞子
摘要

目录定义特性初始化阶段计算阶段成员变量的初始化顺序定义 我们先来看一个例子 Date(int year, int month, int day)//带参构造函数 :_

定义

我们先来看一个例子

Date(int year, int month, int day)//带参构造函数
        :_year(year)
        , _month(month)
        , _day(day)
    {}

这是一个简单的初始化列表案例,以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括 号中的初始值或表达式。

特性

A.初始化列表能只能初始化一次,多次初始化会报错

Date(int year = 2022, int month = 4, int day = 19)//这是一般的构造函数
	{
		_year = year;
		_month = month;
		_day = day;
        _day = day;//这里_day初始化了两次,编译器会报错,每个成员只能初始化一次
	}

B.编译器也允许构造函数赋初值和初始化列表初始化混用

Date(int year = 2022, int month = 4, int day = 19)//二者不冲突
		: _year(year) //初始化
		, _month(month)
	{
		_day = day;//注意这里和上面也不能两次重复出现,如_year(year)。这样就重复了,初始化只能出现一次
	}

C.const成员变量、引用成员变量、没有默认构造函数的自定义类型成员只能在初始化列表初始化。

Date(int year = 2022, int month = 4, int day = 19)
		: _year(year) 
		, _month(month)
		, _n(2) //const成员变量必须使用初始化列表进行初始化
	{
		_day = day;
		//_n = 2; //const成员变量不能在函数体内初始化
	}
Date(int year = 2022, int month = 4, int day = 19)
		: _year(year) 
		, _month(month)
		,_ref(year)//引用成员变量要在初始化列表初始化
	{
		_day = day;
		//_ref = year; //引用成员变量不能在函数体内初始化
	}
Date(int year = 2022, int month = 4, int day = 19)
		: _year(year) 
		, _month(month)
		, _a(20)//没有默认构造函数的自定义类型成员变量必须在初始化列表进行初始化
	{
		_day = day;
	}

const成员变量、引用成员变量、没有默认构造函数的自定义类型成员变量必须在初始化列表内初始化的原因:

1.初始化列表是对象的成员变量定义的地方。

2.对象的内置类型成员变量在初始化列表定义时没有要求必须初始化,因此既可以在初始化列表进行初始化,也可以在构造函数体内初始化。

3.const成员变量、引用成员变量、没有默认构造函数的自定义类型成员变量不能先定义再初始化,它们在初始化列表内定义,并且必须在定义时就初始化,因此必须在初始化列表内初始化。

同时构造函数的执行可以分成两个阶段,初始化阶段和计算阶段,初始化阶段先于计算阶段。

初始化阶段

所有类类型(class type)的成员都会在初始化阶段初始化,即使该成员没有出现在构造函数的初始化列表中。

计算阶段

一般用于执行构造函数体内的赋值操作。

成员变量的初始化顺序

class Date
{
public:
    Date(int year, int month, int day)//初始化是根据定义的先后顺序,如year第一个定义,就第一个初始化
        :_month(month)//第二个初始化
        , _year(year) //第一个初始化
        , _day(day)   //第三个初始化
    {}
private:
    int _year; //第一个定义
    int _month;//第二个定义
    int _day;  //第三个定义
};

到此这篇关于c++示例讲解初始化列表方法的文章就介绍到这了,更多相关C++初始化列表内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++示例讲解初始化列表方法

本文链接: https://www.lsjlt.com/news/153733.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++示例讲解初始化列表方法
    目录定义特性初始化阶段计算阶段成员变量的初始化顺序定义 我们先来看一个例子 Date(int year, int month, int day)//带参构造函数 :_...
    99+
    2022-11-13
  • C++深入讲解初始化列表的用法
    目录一、小问题二、类成员的初始化三、类中的 const 成员四、初始化与赋值的不同五、小结一、小问题 下面的类定义是否合法 如果合法,ci 的值是什么,存储在哪里 下面编写代码一探...
    99+
    2022-11-13
  • C++初始化列表的方法有哪些
    本篇内容介绍了“C++初始化列表的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、类的初始化表首先是类中使用构造函数时的初始化表...
    99+
    2023-07-05
  • C语言示例讲解结构体的声明与初始化方法
    目录一、结构体声明的结构1.直接声明2.使用typedef声明一个新的类型3.不完全声明二.结构体初始化1.声明(同时定义)时直接赋值2.定义时直接赋值3.定义后赋值4.指定初始化一...
    99+
    2022-11-13
  • 解析之C++的列表初始化语法
    目录聚合初始化大括号省略(brace elision)std::initializer_list的另一个故事连《Effective Modern C++》都弄错了的规则构造函数的两步...
    99+
    2022-11-12
  • C++学习之初始化列表详解
    目录前言一、类的初始化表二、initializer_list前言 本文主要介绍C++中地初始化列表 目前对初始化列表应该有两个方面的定义,一个是类的构造函数中使用的那个初始化表,另一...
    99+
    2023-03-19
    C++初始化列表 C++ 列表
  • C++初始化函数列表详细解析
    在以下三种情况下需要使用初始化成员列表: 一,需要初始化的数据成员是对象的情况; 二,需要初始化const修饰的类成员; 三,需要初始化引用成员数据; 原因:C++可以定义引用类型的...
    99+
    2022-11-15
    初始化函数列表
  • C++11中初始化列表initializer lists的使用方法
    C++11引入了初始化列表来初始化变量和对象。自定义类型,如果想用初始化列表就要包含initializer_list头文件。 C++11将使用大括号的初始化(列表初始化)作为一种通用...
    99+
    2022-11-12
  • Python中list初始化方法示例
    本文实例讲述了Python中list初始化方法。分享给大家供大家参考,具体如下: 1、基本方法。 lst = [1, 2, 3, 4, 5] 2、初始化连续数字。 >>> l...
    99+
    2022-06-04
    示例 初始化 方法
  • C++构造函数的初始化列表详解
    目录1.问题2.解决方法(初始化列表)3.顺序问题总结 1.问题 class A { private: int m_a; public: A(int a) { cout ...
    99+
    2022-11-12
  • C++细讲深浅拷贝与初始化列表如何操作
    目录深浅拷贝区别代码解释特别注意内存图解释初始化列表语法具体实现总结深浅拷贝区别 上一节简单提了编译器会默认给我们提供值拷贝构造函数,结果是新的对象会拥有和传入对象一样的属性,由编译...
    99+
    2022-11-13
  • c++基础语法:构造函数初始化列表
    C++为类中提供类成员的初始化列表 类对象的构造 顺序是这样的:1.分配内存,调用构造函数 时,隐式/显示的初始化各数据 成员2.进入构造函数后在构造函数中执行一般计算 使用初始化...
    99+
    2022-11-15
    构造函数 初始化列表
  • C++11中列表初始化机制的概念与实例详解
    目录概述 实现机制详解 POD类型的列表初始化 含有构造函数的类的列表初始化(C++11) 列表初始化用于函数返回值 引入std::initializer_list 代码验证 应用 ...
    99+
    2022-11-12
  • C++构造函数初始化列表的实现详解
    目录1.前言2.初始化列表3.注意事项1.前言 初始化就是给变量一个初始值。 初始化的目的是为了让变量有值,防止使用时出现异常。 在构造函数中,有一项重要功能就是对成员变量进行初始化...
    99+
    2022-11-13
  • C语言内存管理及初始化细节示例详解
    目录地址空间指针与内存关系内存分配与初始化细节内存泄漏Cookie地址空间 首先我们回味一下之前的老图,这个图由于是我手残加 ppt 即时创作,又因为是C语言入门时讲的,内容非常粗...
    99+
    2022-11-13
  • 聊聊GO初始化数据结构的方法(附代码示例)
    本篇文章给大家介绍有关GO语言初始化数据结构的方法,GO里面提供了2个关键字来进行初始化数据结构,下面一起看看怎么使用吧~希望对大家有所帮助。使用 golang 进行编码过程中,你们都是如何初始化数据结构的呢?GO 里面提供了 2 个关键字...
    99+
    2023-05-14
    初始化 Go go语言
  • BeanPostProcessor在显示调用初始化方法前修改bean详解
    目录BeanPostProcessor定义BeanPostProcessor调用时机定义使用实例spring中bean的生命周期BeanPostProcessor定义 BeanPo...
    99+
    2022-12-26
    BeanPostProcessor修改bean BeanPostProcessor显示调用初始化
  • C++类与对象深入之运算符重载与const及初始化列表详解
    目录一:运算符重载相等运算符重载赋值运算符重载小于运算符重载二:const成员const修饰类的成员函数三:cin、cout重载四:初始化列表构造函数赋初值初始化列表explicit...
    99+
    2022-11-13
  • Django表单外键选项初始化的问题及解决方法
    问题描述 先说明一下问题的由来: Django的模型中经常会用ForeignKey来关联其他表格数据 class MeasureTask(models.Model): t...
    99+
    2022-11-12
  • win10系统提示初始化配置资源失败的解决方法
    这篇文章将为大家详细讲解有关win10系统提示初始化配置资源失败的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。win10提示初始化配置资源失败怎么办打开开始菜单,点击设置。出现设置窗口,点击更新...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作