gpt4 book ai didi

c++ - 在 C++ 中全局初始化类的正确方法

转载 作者:行者123 更新时间:2023-12-02 02:53:05 25 4
gpt4 key购买 nike

我知道全局不好,但作为一种实践,这是初始化多个对象文件之间使用的全局类的正确方法吗?

header 1.h

class test {
int id;
public:
test(int in){
id = in;
}
int getId(){
return id;
}
};

extern test t;

文件1.cc:

#include <iostream>
#include "1.h"

int main(){
std::cout << t.getId() << std::endl;
return 0;
}

文件2.cc:

#include "1.h"

test t(5);

现在,如果我在 header 中全局使用 static 方法而不是 extern ,会怎么样?

如果我错了,请纠正我,但这可以很好地编译,但是我会在目标文件和最终二进制文件中拥有相同 t 的 2 个不同的不相关拷贝?那不好吗?或者链接器是否对其进行排序以消除多个拷贝?

最佳答案

存在全局实例,而不是全局类。

您拥有的是一个全局实例。是的,这听起来是正确的,直到您遇到多个相互依赖的全局实例。然后真正的乐趣才会开始。

关于c++ - 在 C++ 中全局初始化类的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59846533/

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