显然,那里的意见种类很多,其中包括" 永远!永远封装(即使它仅仅是一个宏!) "至" 这没什么大不了的 - 当它更方便时使用它们. "
所以.
具体,具体原因(最好以一个例子为准)
虽然这是主观的,但我会选择一个答案(对我而言,这最能代表每个开发人员应该与全局人员建立的爱/恨关系),社区将投票给他们.
我相信新手有这样的参考是很重要的,但如果存在与你的答案基本相似的另一个答案,请不要混淆 - 添加评论或编辑其他人的答案.
-亚当
int main()
{
int a;
cout << a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么要输出值 0。我想如果一个变量未初始化,它会输出一个垃圾值。
但是,我也记得听说整数的默认值是 0,所以我有点困惑。
谢谢
我知道 global 不好,但作为一种实践,这是初始化在多个目标文件之间使用的全局类的正确方法吗?
标题 1.h
class test {
int id;
public:
test(int in){
id = in;
}
int getId(){
return id;
}
};
extern test t;
Run Code Online (Sandbox Code Playgroud)
文件 1.cc :
#include <iostream>
#include "1.h"
int main(){
std::cout << t.getId() << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
文件 2.cc:
#include "1.h"
test t(5);
Run Code Online (Sandbox Code Playgroud)
现在,如果不是extern我在标题中static全局使用该方法static test t(0);呢?
如果我错了,请纠正我,但这会编译得很好,但是我t在两个目标文件和最终二进制文件中都会有 2 个不同的不相关副本?那不好吗?或者链接器是否对其进行排序以消除多个副本?