📜  c++ 变量的初始化 - C++ (1)

📅  最后修改于: 2023-12-03 14:59:48.754000             🧑  作者: Mango

C++变量的初始化

在C++中,变量初始化是一种为变量指定初始值的方式。C++支持多种初始化变量的方法,包括默认初始化、值初始化和列表初始化。

默认初始化

默认初始化是指在定义变量时没有赋初值时,系统会自动给变量赋一个默认值。默认初始化的值取决于变量的类型、作用域和存储位置。在C++中,不同类型的变量有不同的默认初值。

基本数据类型的默认初始化值

| 数据类型 | 默认值 | |--------|--------| | bool | false | | char | '\0' | | int | 0 | | float | 0.0f | | double | 0.0 |

自定义数据类型的默认初始化值

自定义数据类型的默认值取决于该类型的构造函数是否有提供默认参数。

例如:

class Person {
public:
    Person() : age(0), name("") {}
private:
    int age;
    string name;
};

在这个例子中,类Person的构造函数提供了默认值,所以在定义变量时没有提供初值,对象将被默认初始化。

Person p; // p.age = 0, p.name = ""
值初始化

值初始化是指通过特殊的语法显式指定变量初值为0或者空指针。

使用花括号可以完成值初始化:

int x{}; // x = 0
char* p{}; // p = nullptr

在C++11之前,这种方式只针对POD类型(plain old data,简单的标量数据类型)有定义,C++11之后对于所有类型都有定义。

列表初始化

列表初始化是指使用初始化列表为变量赋值,它的语法格式为type variable{value1, value2, ...}

列表初始化适用于所有的数据类型(包括自定义类型),可以用于数组、结构体、类等各种类型。

例如,在定义数组时,列表初始化将比初始化变量更简洁明了:

int arr[] = {1, 2, 3, 4};

另外,使用列表初始化可以在定义对象的同时初始化它的成员:

struct Point { int x, y; };
Point p = {10, 20};
总结

在C++中,变量的初始化是一种安全编程的技巧。使用默认初始化、值初始化和列表初始化等多种方式可以减少程序中变量未初始化的错误,使代码更加可读、可靠。

参考文献:C++ Primer Plus