程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 虛函數-動物的叫聲

虛函數-動物的叫聲

編輯:C++入門知識

[cpp]  /*
【項目1】根據給出的基類Animal和main()函數。
1、根據給出的main()函數和運行結果的提示,設計出相關的各個類,注意觀察運行結果,提取出每個類中需要的數據成員,並匹配上需要的成員函數。
2、顯然,Animal設計為抽象類更合適,Animal不需要能夠實例化,是專門作基類使用的。改造程序,使Animal設計為抽象類,這時main()函數中p = new Animal();將出錯,將此行刪除。
3、每一個Animal的派生類都有一個“名字”數據成員,這一共有的成員完全可以由基類提供改造上面的程序,將這一數據成員作為抽象類Animal數據成員被各派生類使用。
下面是給出的基類Animal和main()函數:
*/ 
 
 
/* 
* Copyright (c) 2013, 煙台大學計算機學院                     
* All rights reserved.                     
* 文件名稱:test.cpp                     
* 作者:邱學偉                    
* 完成日期:2013 年 5 月 31 日                     
* 版本號:v1.0                                        
* 輸入描述:無                     
* 問題描述:                  
* 程序輸出:
* 問題分析:                    
* 算法設計:略                     
*/          
#include <iostream>  
using namespace std; 
class Animal 

public: 
    virtual void cry() 
    { 
        cout<<"不知哪種動物,讓我如何學叫?"<<endl; 
    } 
}; 
class Mouse:public Animal 

public: 
    Mouse(string n,char s); 
    void cry(); 
private: 
    string name; 
    char sex; 
}; 
Mouse::Mouse(string n,char s) 

    name=n; 
    sex=s; 

void Mouse::cry() 

    if(sex=='m') 
        cout<<"我叫"<<name<<",我是一只男老鼠,我的叫聲是”吱吱吱“"<<endl; 
    if(sex=='f') 
        cout<<"我叫"<<name<<",我是一只女老鼠,我的叫聲是”吱吱吱“"<<endl; 

class Cat:public Animal 

public: 
    Cat(string n,char s); 
    void cry(); 
private: 
    string name; 
    char sex; 
}; 
Cat::Cat(string n,char s):name(n),sex(s) {} 
void Cat::cry() 

    if(sex=='m') 
        cout<<"我叫"<<name<<",我是一只公貓,我的叫聲是”喵喵喵“"<<endl; 
    if(sex=='f') 
        cout<<"我叫"<<name<<",我是一只母貓,我的叫聲是”喵喵喵“"<<endl; 

class Dog:public Animal 

public: 
    Dog(string n); 
    void cry(); 
private: 
    string name; 
}; 
Dog::Dog(string n):name(n) {} 
void Dog::cry() 

    cout<<"我是一只狗,我的叫聲是“汪汪汪”"<<endl; 

class Giraffe:public Animal 

public: 
    Giraffe(string n,char s); 
    void cry(); 
private: 
    string name; 
    char sex; 
 
}; 
Giraffe::Giraffe(string n,char s):name(n),sex(s) {} 
void Giraffe::cry() 

    cout<<"我叫"<<name<<",我是一只長頸鹿,我的脖子太長,發不出聲音來"<<endl; 

int main( ) 

    Animal *p; 
    p = new Animal(); 
    p->cry(); 
    Mouse m1("Jerry",'m'); 
    p=&m1; 
    p->cry(); 
    Mouse m2("Jemmy",'f'); 
    p=&m2; 
    p->cry(); 
    Cat c1("Tom",'f'); 
    p=&c1; 
    p->cry(); 
    Dog d1("Droopy"); 
    p=&d1; 
    p->cry(); 
    Giraffe g1("Gill",'m'); 
    p=&g1; 
    p->cry(); 
    return 0; 

/*
【項目1】根據給出的基類Animal和main()函數。
1、根據給出的main()函數和運行結果的提示,設計出相關的各個類,注意觀察運行結果,提取出每個類中需要的數據成員,並匹配上需要的成員函數。
2、顯然,Animal設計為抽象類更合適,Animal不需要能夠實例化,是專門作基類使用的。改造程序,使Animal設計為抽象類,這時main()函數中p = new Animal();將出錯,將此行刪除。
3、每一個Animal的派生類都有一個“名字”數據成員,這一共有的成員完全可以由基類提供改造上面的程序,將這一數據成員作為抽象類Animal數據成員被各派生類使用。
下面是給出的基類Animal和main()函數:
*/


/*
* Copyright (c) 2013, 煙台大學計算機學院                    
* All rights reserved.                    
* 文件名稱:test.cpp                    
* 作者:邱學偉                   
* 完成日期:2013 年 5 月 31 日                    
* 版本號:v1.0                                       
* 輸入描述:無                    
* 問題描述:                 
* 程序輸出:
* 問題分析:                   
* 算法設計:略                    
*/        
#include <iostream>
using namespace std;
class Animal
{
public:
    virtual void cry()
    {
        cout<<"不知哪種動物,讓我如何學叫?"<<endl;
    }
};
class Mouse:public Animal
{
public:
    Mouse(string n,char s);
    void cry();
private:
    string name;
    char sex;
};
Mouse::Mouse(string n,char s)
{
    name=n;
    sex=s;
}
void Mouse::cry()
{
    if(sex=='m')
        cout<<"我叫"<<name<<",我是一只男老鼠,我的叫聲是”吱吱吱“"<<endl;
    if(sex=='f')
        cout<<"我叫"<<name<<",我是一只女老鼠,我的叫聲是”吱吱吱“"<<endl;
}
class Cat:public Animal
{
public:
    Cat(string n,char s);
    void cry();
private:
    string name;
    char sex;
};
Cat::Cat(string n,char s):name(n),sex(s) {}
void Cat::cry()
{
    if(sex=='m')
        cout<<"我叫"<<name<<",我是一只公貓,我的叫聲是”喵喵喵“"<<endl;
    if(sex=='f')
        cout<<"我叫"<<name<<",我是一只母貓,我的叫聲是”喵喵喵“"<<endl;
}
class Dog:public Animal
{
public:
    Dog(string n);
    void cry();
private:
    string name;
};
Dog::Dog(string n):name(n) {}
void Dog::cry()
{
    cout<<"我是一只狗,我的叫聲是“汪汪汪”"<<endl;
}
class Giraffe:public Animal
{
public:
    Giraffe(string n,char s);
    void cry();
private:
    string name;
    char sex;

};
Giraffe::Giraffe(string n,char s):name(n),sex(s) {}
void Giraffe::cry()
{
    cout<<"我叫"<<name<<",我是一只長頸鹿,我的脖子太長,發不出聲音來"<<endl;
}
int main( )
{
    Animal *p;
    p = new Animal();
    p->cry();
    Mouse m1("Jerry",'m');
    p=&m1;
    p->cry();
    Mouse m2("Jemmy",'f');
    p=&m2;
    p->cry();
    Cat c1("Tom",'f');
    p=&c1;
    p->cry();
    Dog d1("Droopy");
    p=&d1;
    p->cry();
    Giraffe g1("Gill",'m');
    p=&g1;
    p->cry();
    return 0;
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved