C++类成员初始化的三种方式

C++类成员初始化是一种在创建对象时给类成员变量赋值的方式,它通常发生在构造函数中。在C++中,类成员初始化方式有三种:默认构造函数初始化、成员初始化列表和构造函数初始化。下面我们将分别详细介绍这三种方式。

默认构造函数初始化

对于没有定义构造函数的类,C++编译器会为其自动生成默认构造函数,在这种情况下,编译器会使用默认值为成员变量赋初值。例如,下面的代码就使用了默认构造函数初始化:

#include <iostream>
using namespace std;

class Example {
  public:
    int x;          // x的值为0
    string str;     // str的值为空字符串

    void Display() {
      cout << "x = " << x << endl;
      cout << "str = " << str << endl;
    }
};

int main() {
  Example ex;
  ex.Display(); // 输出:x = 0,str = ""
  return 0;
}

成员初始化列表

成员初始化列表是一种显示的初始化成员变量的方式,它的格式为在构造函数后面紧跟着成员初始化列表,列表中的每个成员变量都以冒号(:)开始,每个成员变量之间用逗号(,)分隔。例如:

#include <iostream>
#include <string>
using namespace std;

class Example {
  public:
    int x;
    string str;

    // 在初始化列表中给成员变量赋初值
    Example(int a, string s) : x(a), str(s) {}

    void Display() {
      cout << "x = " << x << endl;
      cout << "str = " << str << endl;
    }
};

int main() {
  Example ex(10, "Hello");
  ex.Display(); // 输出:x = 10,str = "Hello"
  return 0;
}

在上面的示例中,我们定义了一个Example类,它有两个成员变量x和str,在构造函数中使用了成员初始化列表给x和str赋初值。

构造函数初始化

对于有参数的构造函数,我们可以直接在构造函数中给成员变量赋值。例如:

#include <iostream>
using namespace std;

class Example {
  public:
    int x;
    Example(int a) {
      x = a;
    }
    void Display() {
      cout << "x = " << x << endl;
    }
};

int main() {
  Example ex(10);
  ex.Display(); // 输出:x = 10
  return 0;
}

在上面的示例中,我们定义了一个Example类,它有一个成员变量x,并且定义了一个参数为a的构造函数,在构造函数中直接给x赋值。

通过上面的介绍,我们可以看出,在C++中,我们可以通过以上三种方式来初始化类的成员变量,在使用时应根据实际场景选择最合适的方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++类成员初始化的三种方式 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • C标准库的实现详解

    C标准库的实现详解 简介 assert.h 是 C 标准库中的一个头文件,该头文件包含一个宏 assert() 和一些用于调试的宏定义,它们可以在程序运行中检查和诊断条件是否为真,即程序是否按照预期运行。通常情况下,assert() 用于调试程序,以确保程序的正确性。 assert()宏的使用 assert() 宏用于在程序运行期间检测给定的条件是否为真。如…

    C 2023年5月23日
    00
  • MySQL中多个left join on关联条件的顺序说明

    在 MySQL 的多个 LEFT JOIN 操作中,我们需要在 ON 子句中指定关联条件。正确顺序的设置可以有效优化查询性能,同时保证关联结果的正确性。 如何设置关联条件的顺序?我们可以遵循以下步骤: 从主表开始,其余表按照查询的依赖关系顺序连接。 对于非主表,保证其实际关联的表能够尽早地被筛选,有效缩小数据集的范围,减少查询所需的时间。 为了更好的理解这个…

    C 2023年5月22日
    00
  • C++深入探究二阶构造模式的原理与使用

    C++深入探究二阶构造模式的原理与使用 什么是二阶构造模式? 二阶构造模式是C++中一个设计模式,也被称为”构造与初始化分离”(Construct and Initialize Separately)模式。 它的基本思想是将一个类的构造和初始化代码分开,将构造函数负责分配储存空间和设置默认值,而初始化函数则负责实际的初始化工作。 为什么要使用二阶构造模式? …

    C 2023年5月22日
    00
  • C++ static详解,类中的static用法说明

    C++ static详解 一、static static 是 C++ 中的关键字,用于表示静态的意思。它可以修饰类的成员变量和成员函数,以及全局变量和函数,具体用法如下: 1.1 类的静态成员变量 类的静态成员变量是指在类中声明的以 static 关键字开头的成员变量。它是归属于类的,而不是归属于类的对象。因此,在创建类的对象时,并没有为静态成员变量分配存储…

    C 2023年5月22日
    00
  • 如何查看Win10笔记本电池状况及电量详细报告?

    下面是详细讲解如何查看Win10笔记本电池状况及电量详细报告的攻略: 1. 查看电池状况 Windows 10提供了自带的电池健康报告工具,使用方法如下: 1.1. 打开”Windows PowerShell”命令行工具 可以通过在任务栏搜索栏中输入”PowerShell”,并点击”Windows PowerShell”应用程序来打开该命令行工具。 1.2.…

    C 2023年5月23日
    00
  • Java中json使用方法_动力节点Java学院整理

    Java中json使用方法_动力节点Java学院整理 什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,用于描述复杂数据结构。JSON格式兼容JavaScript,Python,C#等多种编程语言,逐渐替代了XML成为当今最常用的数据交换格式之一。 JSON的语法 JSON的语法是类似于JavaScr…

    C 2023年5月23日
    00
  • 1分钟了解C语言正确使用字节对齐及#pragma pack的方法

    ​  C/C++编译器的缺省字节对齐方式为自然对界。即在缺省情况下,编译器为每一个变量或是数据单元按其自然对界条件分配空间。   在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储(成员之间可能有插入的空字节),第一个成员的地址和整个结构的地址相同。   编译器缺省的结构成员自然对界条…

    C 2023年5月5日
    00
  • Objective-C Json 实例详解

    Objective-C Json 实例详解 什么是JSON? JSON是一种轻量级的数据交换格式,它是基于JavaScript对象语法的子集,易于人们理解和编写,也易于计算机解析和生成。在近年来的web开发中,JSON已经成为前后端数据交互最常用的格式之一。 使用Objective-C解析JSON 在Objective-C中,解析JSON非常方便,可以使用系…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部