21xrx.com
2024-09-20 00:34:16 Friday
登录
文章检索 我的文章 写文章
C++ 对象初始化方法详解
2023-07-02 00:48:19 深夜i     --     --
C++ 对象 初始化 方法 详解

C++ 是一种面向对象的编程语言,它支持多种对象初始化方法。对象初始化是创建和设置对象属性的过程,它可以在对象创建时或之后进行。本文将详细介绍 C++ 中的对象初始化方法。

1. 默认初始化

默认初始化是指在定义对象时没有显式初始化它的成员变量,这些成员变量的值将是未定义的或随机的。例如:


int x; // 默认初始化 x,x 的值未定义

对于类对象来说,其默认构造函数将被调用来初始化对象的成员变量。例如:


class MyClass {

public:

  MyClass()

    // 默认构造函数

  

private:

  int x; // 默认初始化为随机值

};

MyClass obj; // 默认调用默认构造函数初始化 obj,obj.x 的值未定义

2. 值初始化

值初始化是指将对象的成员变量初始化为默认值。对于基本数据类型,它们的默认值为 0,对于指针类型,默认值为 nullptr。例如:


int x{}; // 值初始化为 0

char str[10]{}; // 值初始化为 0

对于类对象来说,其默认构造函数或自定义的构造函数可以用来实现值初始化。例如:


class MyClass {

public:

  MyClass() : x{}, y(0)

    // 默认构造函数

  

private:

  int x;

  int y;

};

MyClass obj; // 调用默认构造函数进行值初始化,obj.x 的值为 0,obj.y 的值为 0

3. 直接初始化

直接初始化是指使用括号将对象初始化,括号内可以传递参数进行初始化。例如:


int x(10); // 直接初始化 x 值为 10

std::string str("hello"); // 直接初始化 str 为 "hello"

对于类对象来说,可以使用自定义的构造函数进行直接初始化。例如:


class MyClass {

public:

  MyClass(int a, int b) : x(a), y(b)

    // 自定义构造函数

  

private:

  int x;

  int y;

};

MyClass obj(1, 2); // 调用自定义构造函数进行直接初始化,obj.x 的值为 1,obj.y 的值为 2

4. 复制初始化

复制初始化是指使用等号将一个对象初始化为另一个对象。对于基本数据类型,可以直接进行复制初始化。例如:


int x = 10; // 和直接初始化一样

对于类对象来说,其复制构造函数将被调用来实现复制初始化。例如:


class MyClass {

public:

  MyClass(const MyClass& other) : x(other.x), y(other.y)

    // 复制构造函数

  

private:

  int x;

  int y;

};

MyClass obj1(1, 2);

MyClass obj2 = obj1; // 调用复制构造函数进行复制初始化,obj2.x 的值为 1,obj2.y 的值为 2

以上是 C++ 中常见的对象初始化方法,了解这些方法有助于编写更加规范和高效的代码。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复