21xrx.com
2024-11-22 07:57:16 Friday
登录
文章检索 我的文章 写文章
C++11初始化的方法
2023-07-05 11:10:58 深夜i     --     --
C++11 初始化 列表初始化 统一初始化语法 委托构造函数

C++11是C++的最新版本,其中引入了一些新的初始化方法。在本篇文章中,我们将介绍这些新的初始化方法。

1. 列表初始化

C++11中的列表初始化是一种更加简洁、直观的初始化方式。使用花括号来包围一个列表,其中列表中的每个元素被逗号分隔开来,从而快速地初始化一个对象。例如:


int arr[] = 2;

std::vector<int> vec = 3;

2. 自动类型推断初始化

使用auto关键词,可以使编译器自动推断变量的类型。通过这种方式初始化一个变量,我们可以编写更简单的代码,同时也避免了类型声明的繁琐。例如:


auto x = 5; // 推断出x的类型为int

auto str = "Hello, World!"; // 推断出str的类型为const char*

3. 拷贝列表初始化

另一种列表初始化的形式是使用拷贝列表初始化,其中初始化列表中的元素通过移动或者拷贝来初始化。如果一个元素不支持移动,则使用拷贝初始化。例如:


std::unique_ptr<int> p(new int(5));

std::vector<std::unique_ptr<int>> vec = { std::move(p) };

4. 委托构造函数

委托构造函数是一种在构造函数中调用其他构造函数的方法。使用这种方式能够更加方便地管理构造函数重载。例如:


class A {

public:

  A(int x, int y) : _x(x), _y(y) {}

  A(int x) : A(x, 0) {}

private:

  int _x, _y;

};

5. 默认初始化

C++11中,可以为变量指定默认的初始化值。当我们定义变量却没有显式地初始化时,编译器会使用默认初始化值来初始化该变量。例如:


int i{}; // i默认被初始化为0

char c{}; // c默认被初始化为空字符

在使用默认初始化时,默认初始化的值也可以修改,例如:


int i{42}; // i的值为42而不是0

总结:

C++11引入的这些初始化方法,使得代码更加简洁、高效,同时提高了代码的可读性。在实际的编程工作中,我们可以根据需要,选择合适的初始化方法来初始化我们的对象。

  
  

评论区

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