小编her*_*mos的帖子

使用gcc进行纯虚函数调用时链接器错误

我和一个朋友进行了一次关于构造对象的非常有趣的讨论,最终得到了这段代码:

#include <iostream>

class Parent {
  public:
    Parent( ) {
      this->doSomething( );
    }

    virtual void doSomething( ) = 0;
};

class Child : public Parent {
    int param;

  public:
    Child( ) {
      param = 1000;
    }

    virtual void doSomething( ) {
      std::cout << "doSomething( " << param << " )" << std::endl;
    }
};

int main( void ) {
    Child c;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道标准没有定义从构造函数或析构函数调用纯虚函数时的行为,这也不是我如何在生产中编写代码的实际示例,它只是检查编译器执行什么的测试.

在Java打印中测试相同的构造

做某事(0)

这是有道理的,因为从父构造函数调用时param没有初始化doSomething().

我期望在C++中有类似的行为,其差异param在调用函数时包含任何内容.

相反,编译上面的代码会导致链接器错误,(c++ (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3) …

c++ linker

5
推荐指数
2
解决办法
2898
查看次数

标签 统计

c++ ×1

linker ×1