- 论坛徽章:
- 0
|
原帖由 win_hate 于 2005-11-21 11:20 发表
type A 指针指向一个 type B 对象本质上就是两种指针的转换,是吗?
在C++中,这个说法不成立,比如:
- #include <iostream>
- using namespace std;
- class a
- {
- public:
- /*virtual*/ void f()
- {
- cout << "in an";
- }
- };
- class b : public a
- {
- public:
- /*virtual*/ void f()
- {
- cout << "in bn";
- }
- };
- int main()
- {
- // 指针指向对象的情况
- a *p2;
- a a1;
- b b1;
- p2 = &a1;
- p2->f();
- p2 = &b1;
- p2->f();
- // 指针转换
- b *p3;
- p3 = &b1;
- p2 = p3;
- p2->f();
- return 0;
- }
复制代码
没有把virtual关键字添加上的时候,输出的结果都是a,但是给f()添加了virtual关键字之后,输出变成了a,b,b因为指针和虚函数实现了动态的绑定,也就是所谓的多态.... |
|