cpp初始化列表用法举例
时间: 2023-10-28 20:12:11 浏览: 41
假设我们有一个类如下:
```
class Person {
public:
Person(std::string name, int age) : m_name(name), m_age(age) {}
private:
std::string m_name;
int m_age;
};
```
在上面的代码中,我们使用了初始化列表来初始化类的成员变量。在构造函数的参数列表后面加上冒号,然后在冒号后面使用成员变量名和相应的值来初始化成员变量。
例如,我们可以使用以下代码创建一个名为“Tom”的人,年龄为18岁:
```
Person tom("Tom", 18);
```
在这个例子中,我们将“Tom”和18作为构造函数的参数传递给Person类,并使用初始化列表将它们分配给m_name和m_age成员变量。
相关问题
cpp初始化列表是什么
C++中的初始化列表是在构造函数中初始化成员变量的一种方式。它是通过在构造函数的函数体之前使用冒号(:)来指定的。使用初始化列表可以提高程序的效率和可读性,因为它可以直接在构造函数中初始化成员变量,而不需要在函数体中再次进行赋值操作。此外,使用初始化列表还可以避免成员变量的默认构造函数被调用多次的问题。
cpp列表初始化和值初始化
C++11引入了初始化列表语法,使列表初始化成为一种更加通用和灵活的初始化方式。列表初始化可以应用于各种数据类型,例如基本类型、数组、结构体、类等。
列表初始化使用大括号{}来表示,可以有以下两种形式:
1. 值初始化:不提供任何值,使用默认值初始化。
```cpp
int a{}; // a被值初始化为0
```
2. 直接初始化:提供一个或多个值,使用这些值进行初始化。
```cpp
int b{5}; // b被直接初始化为5
```
需要注意的是,如果使用列表初始化时提供的值过多,则编译器会报错。例如下面的代码就会报错:
```cpp
int c{1, 2, 3}; // 错误!提供的值过多
```
值初始化和列表初始化的区别在于,值初始化只能使用默认值进行初始化,而列表初始化可以使用指定的值进行初始化。例如:
```cpp
int d; // d未被初始化,其值是未定义的
int e{}; // e被值初始化为0
int f{5}; // f被直接初始化为5
```