想明白为什么没有编译错误
如果一个类有一个相同类型的静态对象,并且该类有参数构造函数,为什么在创建它时没有执行
class test {
static test a;
int b;
public:
test(int arg) {
b = arg;
}
};
int main() {
test t1(100);
return 0;
}
我知道要让它工作,我需要添加为
test test::a(100)
但是没有上面这行为什么没有编译错误。 任何指针
最佳答案
如果有的话,那将是一个链接器错误。但是由于您不使用静态对象,链接器不会查找它,因此不会出现构建错误...
试试这个进行比较:
int main()
{
test::a.b = 7; // sure, you need to make the members public for...
return 0;
}
现在您确实使用了静态对象——但它不是在任何地方创建的,链接器将无法查找它。
关于c++ - 类有一个 selftype 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56587542/