C++ 程序问题

[复制链接]
查看11 | 回复2 | 2008-12-20 00:31:36 | 显示全部楼层 |阅读模式
#include
classA
{
/*public:
A()
{
coutoutput();//////A有virtual时结果为B is work;
((A*)pB)->output();//////A没有virtual时结果为A is work;
((B*)pA)->output();////////A有virtual时结果为A is work;
((B*)pA)->output();//////A没有virtual时结果为B is work;

}
帮忙解释一下这个程序的运行结果吧?
中文注释是运行结果:但为什么会出现这样的结果呢?
为什么A::output()添加了virtual后结果会不同呢?
程序是怎样实现,让一个父类和子类之间装换的呢?
父类和子类在内存中大小不一,怎能让一个父类强制转换为子类呢?
谢谢.

回复

使用道具 举报

千问 | 2008-12-20 00:31:36 | 显示全部楼层
用virtual的时候表示这个函数在内存中只有一份拷贝,而不指定为viutual的话则有多份拷贝~...
回复

使用道具 举报

千问 | 2008-12-20 00:31:36 | 显示全部楼层
virtual 虚函数 !去看看书哇!主要是用与多太!基类指针的调用...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行