虚函数的声明和定义与编译器错误提示
来源:互联网 发布:win10系统如何优化提速 编辑:程序博客网 时间:2024/05/16 11:57
Sprite.h
#pragma onceclass Sprite{public:Sprite(void);virtual ~Sprite(void);};在Sprite.h中,我们对~Sprite进行了声明,但是我们却没有给它时行定义
#include "Sprite.h"Sprite::Sprite(void){}//Sprite::~Sprite(void)//{//}编译器出现LNK2001错误
1>main.obj : error LNK2019: 无法解析的外部符号 "public: virtual __thiscall Sprite::~Sprite(void)" (??1Sprite@@UAE@XZ),该符号在函数 _main 中被引用1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppCommon.targets(611,5): error MSB6006: “link.exe”已退出,代码为 1120。1>Sprite.obj : error LNK2001: 无法解析的外部符号 "public: virtual __thiscall Sprite::~Sprite(void)" (??1Sprite@@UAE@XZ)1>Weapon.obj : error LNK2001: 无法解析的外部符号 "public: virtual __thiscall Sprite::~Sprite(void)" (??1Sprite@@UAE@XZ)1>D:\WorkSpace\AccerCpp\ch1\Debug\Ref_handle.exe : fatal error LNK1120: 1 个无法解析的外部命令========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
再看下面的void Test()函数,同样是只声明,未定义,编译的时候却不报错(当然我们没有调用Test()),这是为什么呢?
#pragma onceclass Sprite{public:Sprite(void);virtual ~Sprite(void);void Test();}; Sprite.cpp#include "Sprite.h"Sprite::Sprite(void){}Sprite::~Sprite(void){}答案是,关键字virtual。
在 类 声明中,用virtual修饰的方法,无论是否调用,都需要给出相应的定义。
0 0
- 虚函数的声明和定义与编译器错误提示
- 函数的声明和定义
- 函数的声明和定义
- 函数的声明和定义
- 函数的声明和定义
- 函数的声明和定义
- 函数的声明和定义
- C语言中变量和函数的声明与定义
- C语言中变量和函数的声明与定义
- 变量和函数的声明与定义(C/C++)
- 函数声明与函数定义的参数
- 变量与函数的声明与定义
- 函数定义与声明
- 函数的定义与声明的区别
- 变量和函数的定义和声明
- 函数声明和定义
- 虚拟函数的定义与声明
- 注意函数/变量的声明与定义
- android4.2&android4.3去掉虚拟按键
- AT+CSMP 设置短消息文本参数
- 在CentOS Linux下部署Activemq 5
- JSON对象 和 java对象互相转换
- Android view 惰性加载 - ViewStub的应用
- 虚函数的声明和定义与编译器错误提示
- 32位和64位系统区别及int字节数
- 高效开发Android App的10个建议
- UNIX网络编程--服务器的几种异常终止
- 云计算时代IT专业人员需具备的10项技能
- 美丽英文短语集锦
- 调试STM32F4 VCP遇到的问题
- windows内核情景分析---内核对象
- wikioi 1017 乘积最大 (2000年NOIP全国联赛普及组NOIP全国联赛提高组)