类有一个自类型的对象

class have an object of selftype

本文关键字:对象 类型 有一个      更新时间:2023-10-16

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

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

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;
}

现在,您确实使用了静态对象 - 但它不是在任何地方创建的,链接器将无法查找它。