C++ 初始化列表28 Aug 2024 | 5 分钟阅读 引言类的 **数据成员** 使用 **初始化列表** 进行初始化。构造函数将成员的 **初始化列表** 指定为冒号后跟着逗号分隔的列表。以下是使用 **初始化列表** 初始化 Point 类的 x 和 y 属性的示例。 输出 x = 11, y = 17 说明 上面显示的代码仅作为 **初始化列表语法** 的说明。在上面的代码中,在构造函数中 **初始化 x** 和 **y** 也是一个简单的过程。但是,在某些情况下,必须使用 **初始化列表** 而不是在构造函数内部初始化数据成员。这些情况如下: 1) 用于非静态 const 数据成员的初始化**Const 数据成员** 需要使用 **初始化列表** 进行初始化。在下面的示例中,"t" 是 Test 类的 **初始化列表** 初始化的 const 数据成员。**Const 数据成员** 在 **初始化列表** 中初始化,因为没有专门为它们分配内存;相反,它们被折叠到 **符号表** 中,因此需要在 **初始化列表** 中进行初始化。 此外,由于它是带参数的构造函数,我们无需调用赋值运算符,这使我们免于执行额外的操作。 输出 10 2) 用于引用成员的初始化**初始化列表** 必须用于初始化引用成员。在下面的示例中,"t" 是 Test 类的一个 **初始化列表** 初始化的引用成员。 输出 50 60 3) 用于没有默认构造函数的成员对象的初始化如下面的示例所示,类 **"A"** 没有 **默认构造函数**,而 **类 "A"** 的对象 **"a"** 是类 **"B"** 的 **数据成员**。需要使用初始化列表来初始化 **"a"**。 输出 Constructor A is called: Value of i: 50 Constructor B is called 说明 如果我们想使用默认构造函数初始化 **"a"**,则不需要 **初始化列表**,但是如果 **类 A** 既有 **默认构造函数** 又有 **带参数的构造函数**,并且我们想使用 **带参数的构造函数** 初始化 **"a"**,则需要 **初始化列表**。 4) 用于基类成员的初始化类似于第 3 点,只有 **初始化列表** 才能用于调用基类的 **带参数的构造函数**。 输出 Constructor A is called: Value of i: 46 Constructor B is called 5) 当数据成员的名称与构造函数参数相同如果 **构造函数参数** 的名称与数据成员的名称匹配,则必须使用 this **指针** 或 **初始化列表** 来初始化数据成员。在下面的示例中,**A()** 的 **成员名** 和 **参数名** 都是 **"i"**。 输出 45 6) 为了性能最好在 **初始化列表** 中初始化所有类变量,而不是在函数体内部赋值。考虑以下示例: 编译器在此处使用以下步骤生成 **MyClass** 类型的对象。 首先为 **"a"** 调用该类型的构造函数。 **MyClass() 构造函数** 调用 **"Type"** 的赋值运算符进行赋值。 编译器处理 **初始化列表** 的过程如下:
考虑修改后的相同代码,在 **MyClass() 构造函数** 中包含 **初始化列表**。 |
数组是存储在内存中相邻的相关数据片段的集合。通过索引号检索每个数据片段的最基本数据结构。将数组的项按升序排列...
阅读 4 分钟
在本文中,您将了解 Stein 算法及其算法和示例。什么是 Stein 算法?Stein 算法是一种用于查找两个非负整数的最大公约数(也称为二进制 GCD 算法)的算法。Stein 算法使用减法、比较、...
阅读 4 分钟
在 C++ 中。但在讨论区别之前,我们必须了解 `std::swap` 和 `std::vector::swap` 在 C++ 中的作用。`std::swap` 是什么?`std::swap` 工具函数定义在 C++ 标准库的 `
阅读 4 分钟
C 和 C++ 编程语言中的实例是什么?在 C 编程中,实例是对象或数据结构的单个出现。例如,如果您有一个名为“Dog”的类,您从该类创建的每只狗都将是“Dog”类的一个实例……
阅读9分钟
问题规定,我们给定一个整数 X 和一个行和列都排序的矩阵。我们必须确定给定的数字“X”是否在此矩阵中找到;如果找到,则显示 X 的确切位置;如果未找到,则输出...
阅读 4 分钟
在本文中,我们将通过一个例子讨论如何在 C++ 中找到 N 中设置位和未设置位计数之间的绝对差。该任务涉及确定整数的设置位(值为 1 的位)和未设置位之间的绝对差...
阅读 3 分钟
“基本 C++ 命令”是指 C++ 编程语言的语法和基本指令,C++ 广泛用于创建各种软件应用程序。面向对象编程 (OOP) 是 C++ 为 C 编程语言带来的新特性之一。从根本上说,C++...
阅读 6 分钟
用于将宽字符转换为等效的单字节字符表示。它是
阅读 2 分钟
C++ 是一种功能强大的编程语言,它拥有庞大的标准库,可为许多操作提供有效的解决方案。通常,在处理数字数据时,需要将字符串转换为浮点数。C++ 标准库为此目的提供了三个基本函数:std::stod、...
阅读 4 分钟
在本文中,您将学习如何在 C++ 中旋转数字的位。当数字的位被旋转时,数字的二进制表示会向左或向右移动预定的位数。在执行各种按位操作任务时...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India