gpt4 book ai didi

C++:要包含在多个cpp文件中的类中的静态变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:56:10 25 4
gpt4 key购买 nike

<分区>

// A.h
class A {
public:
static int a;
};
int A::a = 0;

如果我尝试包含 A.h在多个 .cpp 文件中,链接将失败并显示 multiple definition of A::a .我认为这是有道理的,因为每个 .obj 文件都包含 A::a

但是,我可以使用模板,

// A.h
template<class T>
class A {
public:
static T a;
};
template<class T>
T A<T>::a = 0;

我现在可以包含 A.h在多个 .cpp 文件中,我也可以分配值 A<int>::a = 100;在一个 .cpp 文件中并在另一个文件中使用 A<int>::a 获得相同的值.

  • 模板什么时候会产生这种差异?
  • 这个静态变量是否只有 1 个拷贝?哪个 .obj 将保留此变量?
  • 构造函数只调用一次吗?如果初始值不同,哪个获胜?

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