c++ 中 {}的功能
1、代码块(作用域)
花括号用于创建代码块,也就是一个作用域。在一个代码块中,可以定义局部变量,控制变量的作用范围,以及变量的生命周期。代码块可以在函数、条件豫剧、循环语句等地方使用。
void exampleFunction()
{
int x = 10;
{
int y = 20; // 局部变量 y 只在此代码块内可见
}
// y 在这里不可见
}
2、初始化列表:
花括号可用于初始化各种类型的数据结构,例如数组、结构体、容器等。
int arr[] = {1, 2, 3, 4, 5}; // 初始化整数数组
std::vector<int> vec = {10, 20, 30}; // 初始化整数向量
struct Point { int x, y; };
Point p = {5, 7}; // 初始化结构体
3、lambda 表达式:
花括号用于定义 lambda 表达式的函数体。
auto lambda = [](int x) {
return x * x;
};
4、初始化器列表构造函数(C++11 及以后版本):
花括号可以用于调用初始化器列表构造函数,这在创建对象时非常有用。
std::vector<int> vec = {1, 2, 3, 4};
std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}};
5、类成员初始化列表:
在类的构造函数中,花括号可以用于成员初始化列表。
class MyClass {
public:
MyClass(int x, int y) : a{x}, b{y} {}
private:
int a, b;
};
6、枚举类(C++11 及以后版本):
花括号可以用于定义枚举类中的成员。
enum class Color { Red, Green, Blue };
Color c = Color::Red;
7、无默认构造函数的类的默认初始化(C++11 及以后版本):
对于没有默认构造函数的类,花括号可以用于默认初始化。
class NoDefaultConstructor {
public:
NoDefaultConstructor(int x) { /* constructor code */ }
};
NoDefaultConstructor obj1 = {42}; // 使用初始化列表构造函数