gpt4 book ai didi

C++派生类和虚析构函数

转载 作者:行者123 更新时间:2023-11-30 02:40:59 25 4
gpt4 key购买 nike

请看下面的简单代码:

#include <iostream>
using namespace std;

class semi_shape_1 {
public:
void output() { cout <<" semi_shape_1 works fine.\n"; }
virtual ~semi_shape_1();

protected:
semi_shape_1(){ output();}
};

class test_semiShape_1 : public semi_shape_1 {
};


int main()
{
test_semiShape_1 ts1;
return 0;
}

semi_shape_1 是低音类,test_semiShape_1 是从它派生的。当我运行代码时,出现如下两个错误:

Error1 错误 LNK2019:未解析的外部符号“public: virtual __thiscall semi_shape_1::~semi_shape_1(void)” (??1semi_shape_1@@UAE@XZ) 在函数“public:虚拟 __thiscall test_semiShape_1::~test_semiShape_1(void)"(??1test_semiShape_1@@UAE@XZ) C:\Users\ME\Documents\Visual Studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\ConsoleApplication1.obj

Error2 error LNK1120: 1 unresolved externals C:\Users\ME\Documents\Visual Studio 2012\Projects\ConsoleApplication1\Debug\ConsoleApplication1.exe 1

请问我的代码有什么问题?
机器:Windows 7。
IDE:visual studio 2012。

最佳答案

基类的析构函数没有实现。如果您不提供定义,编译器将隐式创建一个,但既然您提供了定义,那么您还必须提供实现。托尼的评论有答案:

Just change virtual ~semi_shape_1(); to virtual ~semi_shape_1() { }

关于C++派生类和虚析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28536124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com