注册 登录
编程论坛 C++教室

[讨论][求助]这个有点复杂,有点难.

blueboy82006 发布于 2007-08-28 21:14, 458 次点击

我也就学了这么点东西,这个程序就都弄到一起去了,
感觉涉及的很多,了解一些继承,那个虚函数不是太明白,
因为书上没有讲太多,
运行结果:9ss9s
对于结果中的第三个还有最后一个不是太明白,
希望有高手能给详细讲解一下,
不胜感激!

#include<iostream>
using namespace std;
class A
{
int a;
public:
A():a(9){}
virtual void print() const {cout<<a;}
};
class B:public A
{
char b;
public:
B(){b='s';}
void print() const {cout<<b;}
};
void show(A &x){x.print();}
int main()
{
A d1,*p;
B d2;
p=&d2;
d1.print();
d2.print();
p->print();
show(d1);
show(d2);
return 0;
}
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
救命啊!

2 回复
#2
aipb20072007-08-29 00:43
当通过基类的指针或者引用调用虚函数时,发生动态绑定,调用的实际函数是所引用或所指对象类型定义的。


p->print();
show(d1);
show(d2);

都满足上面这句话!
#3
blueboy820062007-08-29 07:16
哦,谢了,
不过太高深,
慢慢理解吧~
1