有这段代码#include<iostream.h>class B
{
public: void print(){cout<<"BBB"<<endl;}
};class C:public B
{
public: void print(){cout<<"CCC"<<endl;}
};
void fun(B obj)
{
obj.print();
};void main()
{
C c;
fun(c);
c.print();
}按理论来说输出的两条结果都应该是"CCC",可是第一个输出的却是"BBB"
想不明白呀,有人能解释一下吗?
{
public: void print(){cout<<"BBB"<<endl;}
};class C:public B
{
public: void print(){cout<<"CCC"<<endl;}
};
void fun(B obj)
{
obj.print();
};void main()
{
C c;
fun(c);
c.print();
}按理论来说输出的两条结果都应该是"CCC",可是第一个输出的却是"BBB"
想不明白呀,有人能解释一下吗?
解决方案 »
- 哪位熟悉生化检测方面的上位机软件设计
- 系统待机的情况下,程序唤醒系统
- 如何用Acrobat(Reader)AcroPDF.dll实现读PDF文件的总页数
- 请问从CControlbar继承来的类用时,当面板浮动时,没法关闭,是什么原因引起的呀?
- 简单问题就是解决不了。(我是新手!请帮忙!!)在线等!!!
- 【安装】VC++和小弟的机器是怎么回事?
- 很疑惑:关于DLL导出类
- 天气不错,散分
- 怎样画五子棋盘????
- VC怎样执行这个存储过程?最后要得到输出的参数(@Result)。
- _tmain(int argc, _TCHAR* argv[])函数如何传入int型word型等的数据?_tmain main tmain等等都有什么区别呢?
- 如何设置网卡的缓冲区大小?
你改下:
#include <iostream.h> class B
{
public:
virtual void print(){cout <<"BBB" <<endl;}
}; class C:public B
{
public:
void print(){cout <<"CCC" <<endl;}
};
void fun(B *obj)
{
obj->print();
}; void main()
{
C c;
fun(&c);
c.print();
}
你改下:
#include <iostream.h> class B
{
public:
virtual void print(){cout <<"BBB" <<endl;}
}; class C:public B
{
public:
void print(){cout <<"CCC" <<endl;}
};
void fun(B *obj)
{
obj->print();
}; void main()
{
C c;
fun(&c);
c.print();
}
如果是在JAVA里是两个"CCC"
fun(c);
这里调用的时候已经将C类变量c强制转换成了B类变量。
这个叫什么来着忘记了,反正是收缩成了基类B了。