简介
- 基础知识
C++ 大括号与生命周期的关系
在C++中,大括号 {}
通常用于定义作用域(scope)。作用域内的对象在进入大括号定义的作用域时被创建,当离开该作用域时被销毁。这与对象的生命周期密切相关。
考虑以下示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
class MyClass {
public:
MyClass() { std::cout << "Constructor\n"; }
~MyClass() { std::cout << "Destructor\n"; }
};
int main() {
std::cout << "Before scope\n";
{
MyClass obj; // 在作用域内定义对象
std::cout << "Inside scope\n";
} // 离开作用域,对象被销毁
std::cout << "After scope\n";
return 0;
}
输出将是:
1
2
3
4
5
Before scope
Constructor
Inside scope
Destructor
After scope
在这个例子中,MyClass
的对象在进入大括号定义的作用域时创建(构造函数被调用),并在离开该作用域时销毁(析构函数被调用)。这说明了大括号与对象生命周期的密切关系。