C++ 的大括号的用法合集
学习C++以来还没有总结过C++的大括号的使用方式,于是有此文记录一下。
方法一:定义代码块
最常用的方式之一,不做解释:
cpp
if (condition) {
// 代码块
} else {
// 另一个代码块
}
方式二:作用域控制
像下面的这样的代码就不能够执行,因为a这个变量作用域不足以让 cout
访问。
cpp
{
int a = 10;
}
cout << a << endl;
return 0;
方式三:类与结构体的定义
这个方式也很常见,不多做解释。
cpp
struct Point {
int x;
int y;
};
class Rectangle {
int width, height;
public:
Rectangle(int w, int h) : width(w), height(h) {}
int area() { return width * height; }
};
方式四:初始化列表
在 C++11 引入了大括号初始化(也称为统一初始化),可以用来初始化变量、数组、容器等。
简单变量初始化
cpp
int x{10};
double y{3.14};
数组初始化
cpp
int arr[3] = {1, 2, 3};
容器初始化
cpp
std::vector<int> vec = {1, 2, 3, 4};
统一初始化方式可以避免窄化转换问题,提高代码的安全性。
值得一提的是,著名的宇宙构造表达式也是这样原理。
方式五:构造函数委托
cpp
class Example {
int a;
public:
Example(int x) : a{x} {}
};
方式六:内联对象定义
cpp
struct Point {
int x, y;
};
Point p = {10, 20}; // 使用大括号直接初始化
对于匿名对象或临时对象,这种写法简洁明了。
方式七:lambda 表达式的函数体
cpp
auto lambda = []() {
return 42;
};
方式八:内联命名空间
大括号用于定义命名空间的范围。
cpp
namespace MyNamespace {
inline namespace v1 {
void func() {}
}
}
目前就这些,如有新的心得则继续补充。