简介

  • 基础知识

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的对象在进入大括号定义的作用域时创建(构造函数被调用),并在离开该作用域时销毁(析构函数被调用)。这说明了大括号与对象生命周期的密切关系。