- 注册时间
- 2004-5-22
- 最后登录
- 2025-2-12
管理员
爱干啥干啥!
  
- 积分
- 6699
|
发表于 2007-8-9 00:44:18
|
显示全部楼层
嗯嗯,又看到这贴。
lz如果有在使用MFC的话,可以注意到MFC并没有怎么使用c++的虚函数来实现多态。相反是使用了大量的宏……这是因为虚函数带来的额外性能开销是MFC必须避免的,所以只好选择其他的方式了。
否则的话,调用virtual方法是指针的重要应用。通过基类类型的指针调用virtual方法,执行的结果是指针指向的实际对象类型所实现的版本。- class A
- {
- virtual int Foo() {return 1;};
- int FooNoVirtual() {return 1;};
- };
- clas B: A
- {
- virtual int Foo() {return 2;};
- int FooNoVirtual() {return 2;};
- }
- void main()
- {
- A a;
- cout<<a.Foo()<<","<<a.FooNoVirtual()<<endl;
- B b;
- cout<<b.Foo()<<","<<b.FooNoVirtual()<<endl;
- A* ptrA = &b;
- cout<<ptrA->Foo()<<","<<ptrA->FooNoVirtual()<<endl;
- }
- 输出:
- 1,1
- 2,2
- 2,1
复制代码 仔细看下就知道区别了。
pS:废话插播……话说我回得那帖是BS书中的例子……完全木有BS楼主的意思哦…… |
|