想了解为什么没有编译错误
如果一个类具有相同类型的静态对象,并且该类具有参数构造函数,为什么在创建它时却没有如此
class test {
static test a;
int b;
public:
test(int arg) {
b = arg;
}
};
int main() {
test t1(100);
return 0;
}
我知道要使其正常工作,我需要添加为
test test::a(100)
但没有以上一行,为什么没有编译错误。 任何指针
答案 0 :(得分:6)
如果完全是,这将是一个 linker 错误。但是,由于您不使用静态对象,因此链接程序将不会查找它,因此不会产生构建错误...
尝试进行比较:
int main()
{
test::a.b = 7; // sure, you need to make the members public for...
return 0;
}
现在,您要做使用静态对象-但这不是在任何地方创建的,链接器将无法对其进行查找。