C++基类指针
//书上说可以同过基类的指针调用 ,编译通过,但是为什么执行的时候会出错了
// 望大家指点
#include<iostream>
using namespace std;
class Base
{
public:
virtual int fcn();
};
class D1:public Base
{
public:
int fcn(int);
};
class D2:public D1
{
public:
int fcn(int);
int fcn();
};
int main()
{
Base bobj;
D1 d1obj;
D2 d2obj;
Base *bp1=&bobj,*bp2=&d1obj,*bp3=&d2obj;
bp1->fcn();
bp2->fcn();
bp3->fcn();
return 0;
}
///////////////////////////////////////////////////
------ 已启动生成: 项目: tre, 配置: Debug Win32 ------
正在链接...
fwe.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall Base::fcn(void)" (?fcn@Base@@UAEHXZ)
fwe.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall D2::fcn(void)" (?fcn@D2@@UAEHXZ)
E:\C++练习题\tre\Debug\tre.exe : fatal error LNK1120: 2 个无法解析的外部命令
生成日志保存在“file://e:\C++练习题\tre\Debug\BuildLog.htm”中
tre - 3 错误,0 警告
---------------------- 完成 ---------------------
生成: 0 已成功, 1 已失败, 0 已跳过
相关推荐
C++基类指针和派生类指针之间的转换方法讲解
函数重载、函数隐藏、函数覆盖 函数重载只会发生在同作用域中(或同一个类中),函数名称相同,但参数类型或参数个数不同。 函数重载不能通过函数的返回类型来区分,因为在函数返回之前我们并不知道函数的返回类型。 函数隐藏和函数覆盖只会发生在基类和派生类之间。 函数隐藏是指派生类中函数与基类中的函数同名,但是这个函数在基类中并没有被定义为虚函数,这种情况就是函数的隐藏。 所谓隐藏是指使用常规的调用方法,派生类对象访问这个函数时,会优先访问派生类中的这个函数,基类中的这个函数对派生类对象来说是隐藏起来的。 但是隐藏并不意味这不存在或完全不可访问。通过 b->Base::func()访问基类中被隐藏的函数。
浅谈C++ 基类指针和子类指针的相互赋值
下面小编就为大家带来一篇浅谈C++ 基类指针和子类指针的相互赋值。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
C++ 基类指针和子类指针相互赋值的实现方法
下面小编就为大家带来一篇C++ 基类指针和子类指针相互赋值的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
cpp代码-C++:类01__继承
cpp代码-C++:类01__继承
c++期末选择填空复习题
1.编写C++程序一般需经过的几个步骤依次是() A.编辑、调试、编译、连接 B.编辑、编译、连接、运行 C.编译、调试、编辑、连接 D.编译、编辑、连接、运行答案:B 解析:(P21)经过编辑、编译、连接和运行四个步骤。编辑是将C++源程序输入计算机的过程,保存文件名为cpp。编译是使用系统提供的编译器将源程序cpp生成机器语言的过程,目标文件为 obj,由于没有得到系统分配的绝对地址,还不能直接运行。连接是将目标文件obj转换为可执行程序的过程,结果为exe。运行是执行exe,在屏幕上显示结果的过程。



