gpt4 book ai didi

c++ - 静态初始化困惑

转载 作者:太空狗 更新时间:2023-10-29 20:48:33 28 4
gpt4 key购买 nike

我对 C++ 中的某些概念感到非常困惑。例如:我有以下两个文件

//file1.cpp
class test
{
static int s;
public:
test(){s++;}
};

static test t;
int test::s=5;

//file2.cpp
#include<iostream>
using namespace std;
class test
{
static int s;
public:
test(){s++;}
static int get()
{
return s;
}
};

static test t;

int main()
{
cout<<test::get()<<endl;
}

现在我的问题是:
1. 即使两个文件具有不同的类定义,如何链接成功?
2.两个类的静态成员是否相关,因为我得到输出为7。

请解释一下静态的概念。

最佳答案

它们链接是因为链接器对 C++ 语言几乎一无所知。但是,如果你这样做,你就违反了单一定义规则,你的程序的行为将是未定义的。编写无效代码并不是学习 C++ 的好方法。另外,您似乎对静态变量有很多疑问 - 这个概念实际上并没有那么复杂 - 您使用的是哪本 C++ 教科书解释得不好?

关于c++ - 静态初始化困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3036469/

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