类具有自定义对象

时间:2019-06-13 19:39:18

标签: c++

想了解为什么没有编译错误

如果一个类具有相同类型的静态对象,并且该类具有参数构造函数,为什么在创建它时却没有如此

class test {

      static test a;
      int b;

      public:
            test(int arg) {
                 b = arg;
              }
};

int main() {
  test t1(100);

  return 0;

}

我知道要使其正常工作,我需要添加为

 test test::a(100)

但没有以上一行,为什么没有编译错误。 任何指针

1 个答案:

答案 0 :(得分:6)

如果完全是,这将是一个 linker 错误。但是,由于您不使用静态对象,因此链接程序将不会查找它,因此不会产生构建错误...

尝试进行比较:

int main()
{
    test::a.b = 7; // sure, you need to make the members public for...    
    return 0;
}

现在,您要做使用静态对象-但这不是在任何地方创建的,链接器将无法对其进行查找。