c++ - 类有一个 selftype 的对象

标签 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)

但是没有上面这行为什么没有编译错误。 任何指针

最佳答案

如果有的话,那将是一个链接器错误。但是由于您不使用静态对象,链接器不会查找它,因此不会出现构建错误...

试试这个进行比较:

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/

相关文章:

c++ - 如何在C++中仅覆盖文件的一部分

c++ - 较新版本的 gcc 中的编译器错误

c++ - 有没有办法在变量中存储类型说明符?

c++ - 在 visual studio 中使用 xtensor 时的尖括号 <> 问题

c# - 无法使用 String.Format 在 WPF 中显示版本字符串

c++ - 函数返回值错误

c++ - CRichEditCtrl OnUpdate() : how to know the start and end positions when a paste is received?

c++ - VC++ 堆栈跟踪不解析生产中的函数名称

c++ - SetWindowsHookEx 问题的文档

c++ - C++/ActiveX用malloc,memcpy,free替换了realloc。功能和性能测试