| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 410 人关注过本帖, 1 人收藏
标题:多态性的实现
只看楼主 加入收藏
hmsabc
Rank: 2
来 自:贵州省兴义市
等 级:论坛游民
帖 子:97
专家分:19
注 册:2010-8-2
结帖率:100%
收藏(1)
 问题点数:0 回复次数:3 
多态性的实现
程序代码:
//基类与派生类中有同名函数
/* 在下面的程序中 Student  是基类,Graduate 是派生类,它们都有 display 这个同名的函数 */
#include <iostream>
#include <string>
using namespace std;

//声明基类 Student
class Student
{
public:
    Student( int, string,float);                         //声明构造函数
    //void display( );                                   //声明输出函数
    virtual void display( );                             //声明虚函数

protected:                                               //受保护成员,派生类可以访问
    int num;
    string name;
    float score;
};

//Student 类成员函数的实现
Student::Student( int n,string nam,float s)              //定义构造函数
{ num = n;name = nam; score = s;}


void Student::display( )                                 //定义输出函数
{
    cout<<"num:"<< num << "\nname:"<< name<<"\nscore:" << score << "\n\n";}

//声明公用派生类 Graduate
class Graduate:public Student
{
public:
    Graduate( int, string,float,float);                   //声明派生类构造函数
    virtual void display( );             //声明输出函数,根据C++规定,这里的 display 函数自然成为虚函数
                                         // “ virtual ”可加可不加
private:
    float pay;
};

//Graduate 类成员函数的实现
void Graduate::display( )                                   //定义输出函数
{
    cout<<"num:"<< num << "\nname:" << name << "\nscore: "<<score <<"\npay = " <<pay <<endl;}

Graduate::Graduate( int n, string nam, float s, float p):Student( n,nam,s),pay(p){ }        //派生类构造函数初始化

//主函数
int main( )
{
    Student stud1(1001,"Li",87.5);                         //定义 Student 类对象 stud1
    Graduate grad1( 2001,"Wang", 98.5,563.5);              //定义 Graduate 类对象 grad1
    Student * pt = &stud1;                                 //定义指向基类对象的指针变量 pt
    pt->display( );
    //grad1.display( );
    //Graduate * ptr = &grad1;
    //ptr->display( );
    pt = &grad1;
    pt->display( );
    system("pause");
    return 0;
}
/*这个例子充分说明了通过指针,能够调用同一类族中不同类的同名函数,以实现多态性。如果指针不断地指向同一类族
中不同类的对象,就能不断地调用这些对象中的同名函数*/
搜索更多相关主题的帖子: 多态 
2010-08-10 19:13
mxs810
Rank: 9Rank: 9Rank: 9
来 自:火星
等 级:贵宾
威 望:16
帖 子:234
专家分:1122
注 册:2006-10-19
收藏
得分:0 
学习很认真啊,哈哈

授人以鱼不如授人以渔
2010-08-10 20:11
hmsabc
Rank: 2
来 自:贵州省兴义市
等 级:论坛游民
帖 子:97
专家分:19
注 册:2010-8-2
收藏
得分:0 
回复 2楼 mxs810
谢谢表扬!
2010-08-10 21:49
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
肯定是坚持天天学了,确实挺值得表扬的。
2010-08-11 02:09
快速回复:多态性的实现
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.050057 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved