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

yizhihongxing

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日

相关文章

  • mysql 如何使用JSON_EXTRACT() 取json值

    当mysql存储JSON格式的数据时,我们需要对JSON进行提取。MySQL 5.7版本以上,提供了JSON_EXTRACT()函数来实现从JSON中提取值。 JSON_EXTRACT()函数的语法 JSON_EXTRACT(json_path) json_path为JSON路径参数,返回该路径下的JSON值。 示例1 已知json字段’data’的值为: …

    C 2023年5月23日
    00
  • ASP.NET MVC异常处理模块详解

    ASP.NET MVC异常处理模块是一种用来处理系统中出现的错误和异常的模块,可以有效降低系统的错误率和提供系统的稳定性。本文将从以下几个方面介绍ASP.NET MVC异常处理模块的详细攻略: 1. 异常处理的原理和流程 通常情况下,ASP.NET MVC系统中的异常处理流程如下: 1)异常发生时:程序运行过程中,如果出现了错误和异常,将会被.NET平台捕获…

    C 2023年5月23日
    00
  • js数组与字符串常用方法总结

    JS数组与字符串常用方法总结 本篇攻略主要介绍 JavaScript 中数组和字符串的常用方法。 数组 1. 创建数组 数组可以通过以下方式进行创建: var arr1 = []; // 空数组 var arr2 = new Array(); // 空数组 var arr3 = [1, 2, 3]; // 带有元素的数组 2. 数组的常用方法 2.1 pus…

    C 2023年5月22日
    00
  • C++ 中引用和指针的关系实例详解

    C++ 中引用和指针的关系实例详解 引用和指针的概念 在 C++ 中,引用和指针都是用来操作内存地址的工具。其中,引用是一个指向变量的别名,具有自动解引用的特性;指针是一个变量,存储了其他变量的地址,通过解引用操作可以访问这个变量的值。 面对的问题 当我们需要在程序中操作一个变量时,通常需要借助引用或者指针来进行操作。但是,在使用这两个工具时,可能会遇到一些…

    C 2023年5月22日
    00
  • C语言实现简单的<三子棋>案例

    C语言实现简单的三子棋案例 一、背景介绍 三子棋是一种经典的棋类游戏,它在二十世纪中期流行于欧美各地,并成为了计算机人工智能领域的经典案例之一。本文将介绍如何使用C语言实现简单的三子棋游戏,供读者学习参考。 二、技术选型 我们将使用C语言作为主要编程语言,使用命令行界面进行游戏界面展示,不涉及图形界面的开发。 三、实现流程 1. 游戏规则设计 三子棋的规则非…

    C 2023年5月23日
    00
  • 关于C语言除0引发的思考

    关于C语言除0引发的思考 在C语言中,除数为0是一个经常出现的问题,因为这种情况会导致程序崩溃。我们需要理解C语言的除法运算,以便更好地处理这种异常情况。 C语言除数为0的问题 在C语言中,当一个数除以0的时候,会导致除法运算异常。程序将会因此崩溃。这个问题的解决方法是,我们可以在代码中包含对0的判断,避免代码解除0。 #include <stdio.…

    C 2023年5月23日
    00
  • C语言用指针支持栈

    C语言用指针支持栈的完整使用攻略 栈是一种常见的数据结构,在C语言中可以使用指针来支持栈。下面是用指针实现栈的完整使用攻略: 数据结构 栈是一种后进先出(LIFO)的数据结构,可以用数组或链表实现。这里我们使用数组实现栈。 定义栈结构体: #define MAXSIZE 10 // 栈的容量 typedef struct stack { int data[M…

    C 2023年5月9日
    00
  • C语言实现简易文本编译器

    C语言实现简易文本编译器 本攻略将介绍如何使用C语言实现一个简易文本编译器。编译器会将输入的文本文件转换为标准的HTML格式并输出到文件中。 准备工作 在开始之前,你需要安装一个C语言编译器,例如gcc或clang,并确保在你的系统上运行正常。你也需要掌握基本的C语言语法。 构建编译器 首先,我们需要将我们的编译器分为两个部分:词法分析器和语法分析器。 词法…

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