您的位置:首页 > 编程语言 > C语言/C++

a test program for polymophism in c++

2006-11-02 21:51 375 查看
[align=left]#include<iostream>[/align]
[align=left]using namespace std;[/align]
[align=left] [/align]
[align=left]class B[/align]
[align=left]{[/align]
[align=left]public:[/align]
[align=left] virtual void f1() const[/align]
[align=left] {[/align]
[align=left] cout<<"B::f1"<<endl;[/align]
[align=left] }[/align]
[align=left] virtual void f2() const[/align]
[align=left] {[/align]
[align=left] cout<<"B::f2"<<endl;[/align]
[align=left] }[/align]
[align=left]};[/align]
[align=left]class D: public B[/align]
[align=left]{[/align]
[align=left]public:[/align]
[align=left] void f1() const[/align]
[align=left] {[/align]
[align=left] cout<<"D::f1"<<endl;[/align]
[align=left] }[/align]
[align=left] virtual void f3() const[/align]
[align=left] {[/align]
[align=left] cout<<"D::f3"<<endl;[/align]
[align=left] }[/align]
[align=left]};[/align]
[align=left] [/align]
[align=left]void main()[/align]
[align=left]{[/align]
[align=left] D d;[/align]
[align=left] [/align]
[align=left] //pointer and reference both can achieve polymophism[/align]
[align=left] B& rb=d;[/align]
[align=left] rb.f1(); //output: D::f1[/align]
[align=left] rb.B::f1(); //output: B::f1[/align]
[align=left] [/align]
[align=left] B* pb = &d;[/align]
[align=left] pb->f1(); //output: D::f1[/align]
[align=left] pb->B::f1(); //output: B::f1[/align]
[align=left] [/align]
[align=left] char ch;//pause[/align]
[align=left] cin>>ch;[/align]
[align=left]}[/align]
[align=left][/align]
[align=left]Output:[/align]



[align=left][/align]



[align=left] [/align]



If D::f1 changed to
[align=left] void f1() [/align]
[align=left] {[/align]
[align=left] cout<<"D::f1"<<endl;[/align]
[align=left] }[/align]
[align=left][/align]
[align=left]That is delete the const, then the result is:[/align]
[align=left][/align]



[align=left][/align]
[align=left]This is because Constness is a part of function signature.[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: