gpt4 book ai didi

C++ - 在类定义结束时创建的对象的范围

转载 作者:太空狗 更新时间:2023-10-29 23:43:56 25 4
gpt4 key购买 nike

如果我有一个类似的类

class sample{
// ...
} obj;

上面创建的对象obj的作用域是什么?对象什么时候销毁?

最佳答案

obj 的范围与类定义的范围相同。如果您在所有函数之外定义它,它的范围将是全局的,它将在静态初始化时创建和初始化,并作为程序终止的一部分销毁。

但是,也可以在函数中定义这样的对象。在这种情况下,它将在函数进入时创建并在函数返回时销毁。

void test()
{
class sample{ }obj;
}

是完全有效的代码。

您也可以将其定义为类中的嵌套类型。在这种情况下,obj 将是类的成员变量。它将随着包含类对象的构造和销毁而创建和销毁。

struct Foo
{
class sample{ }obj;
};

此外(感谢@sjdalessandro 指出),如果对象在库中定义为具有全局范围并且动态加载该库,则在加载库时创建对象(这不一定是当程序启动时)并在库卸载时销毁(这不一定是程序退出时)。

关于C++ - 在类定义结束时创建的对象的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38494649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com