C++的学习

代码练习

封装一个动物的基类,类中有私有成员:姓名,颜色,指针成员年纪要求:分别完成基类和派生类中的:构造函数、析构函数、拷贝构造函数、拷贝赋值函数

#include <iostream>

using namespace std;
class animal
{
private:
   string name;
   string color;
   int *age;
public:
   animal()
   {}
   animal(string name ,string color, int age):name(name),color(color),age(new int (age))
   {
       cout << "父类的构造函数" << endl;
   }
   ~animal()
   {
       cout << "父类的析构函数" << endl;
   }
   animal(const animal &other):name(other.name),color(other.color),age(new int (*other.age))
   {
       cout << "父类的拷贝构造函数" << endl;
   }

   animal &operator=(const animal &other)
   {
       if(this != &other)
       {
           name = other.name;
           color = other.color;
           age = new int (*other.age);
       }
       cout << "父类的拷贝赋值函数" << endl;
       return *this;
   }

};

class Dog:public animal
{
private:
    int *leg_num;
public:
    Dog()
    {}
    Dog(string name,string color,int age,int n):animal(name,color,age),leg_num(new int (n))
    {
        cout << "子类的构造函数" << endl;
    }
    ~Dog()
    {
        cout << "子类的析构函数" << endl;
    }
    Dog(const Dog &other):animal(other),leg_num(new int (*other.leg_num))
    {
        cout << "子类的拷贝构造函数" << endl;
    }
    Dog &operator=(const Dog other)
    {
        if(this != &other)
        {
            animal::operator=(other);
            leg_num = new int(*other.leg_num);
        }
        cout << "子类的拷贝赋值函数" << endl;
        return *this;
    }
    void speak()
    {
        cout << "汪汪汪" << endl;
    }

};
int main()
{
    Dog d1;
    Dog d2("二狗","黄色",5,4);
    Dog d3(d2);
    d1 = d3;
    return 0;
}

效果图

定义一个基类 Animal,其中有一个虛函数perform(),用于在子类中实现不同的表演行为

#include <iostream>

using namespace std;
class Animal
{
private:
    string name;
protected:
    string getname()
    {
        return name;
    }
public:
    Animal(string name):name(name)
    {

    }
    virtual void perform() = 0 ;
};
class panda:public Animal
{
private:
    string name ;
    int age ;
    string skill;
public:
    panda(string name ,string n, int age,string skill):Animal(name),name(n),age(age),skill(skill)
    {

    }

    void perform()
    {
        cout << getname() << ":" << name << endl;
        cout << "年龄:" << age << endl;
        cout << "爱好与特长:" << skill << endl;    }
};
class dog :public Animal
{
private:
    string name;
    int age;
    string skill;
public:
    dog(string name ,string n, int age,string skill):Animal(name),name(n),age(age),skill(skill)
    {

    }

    void perform()
    {
        cout << getname() << ":" << name << endl;
        cout << "年龄:" << age << endl;
        cout << "爱好与特长:" << skill << endl;    }
};
class tiger :public Animal
{
private:
    string name;
    int age;
    string skill;
public:
    tiger(string name ,string n, int age,string skill):Animal(name),name(n),age(age),skill(skill)
    {

    }

    void perform()
    {
        cout << getname() << ":" << name << endl;
        cout << "年龄:" << age << endl;
        cout << "爱好与特长:" << skill << endl;    }
};
class eagle :public Animal
{
private:
    string name;
    int age;
    string skill;
public:
    eagle(string name ,string n, int age,string skill):Animal(name),name(n),age(age),skill(skill)
    {

    }

    void perform()
    {
        cout << getname() << ":" << name << endl;
        cout << "年龄:" << age << endl;
        cout << "爱好与特长:" << skill << endl;    }
};
class monkey :public Animal
{
private:
    string name;
    int age;
    string skill;
public:
    monkey(string name ,string n, int age,string skill):Animal(name),name(n),age(age),skill(skill)
    {

    }

    void perform()
    {
        cout << getname() << ":" << name << endl;
        cout << "年龄:" << age << endl;
        cout << "爱好与特长:" << skill << endl;
    }
};
int main()
{
    while(1)
    {
        system ("CLS");
        cout << "1.panda" << endl;
        cout << "2.dog" << endl;
        cout << "3.tiger" << endl;
        cout << "4.eagle" << endl;
        cout << "5.monkey" << endl;
        cout << "0.一点都不好玩,我不玩了,我要回家" << endl;
        int key;
        cin >> key;
        switch (key)
        {
        case 1:
        {
            panda h("熊猫","花花",5,"吃竹子");
            Animal *p = &h;
            p->perform();
            cout << "按任意键继续" << endl ;
            getchar();
            getchar();
        }
            break;
        case 2:
        {
            dog d("狗子","二狗",4,"啃骨头");
            Animal *p = &d;
            p->perform();
            cout << "按任意键继续" << endl ;
            getchar();
            getchar();
        }
            break;
        case 3:
        {
            tiger d("老虎","泰哥",8,"晒太阳");
            Animal *p = &d;
            p->perform();
            cout << "按任意键继续" << endl ;
            getchar();
            getchar();
        }
            break;
        case 4:
        {
            eagle d("老鹰","大鸟",7,"摸鱼");
            Animal *p = &d;
            p->perform();
            cout << "按任意键继续" << endl ;
            getchar();
            getchar();
        }
            break;
        case 5:
        {
            monkey d("猴子","空空",5,"吃香蕉");
            Animal *p = &d;
            p->perform();
            cout << "按任意键继续" << endl ;
            getchar();
            getchar();
        }
            break;
        case 0:
            goto END;
            break;

        }
    }
END:
    cout << "回家吃饭去咯" << endl;

    return 0;
}

效果演示

动物园演示

思维导图

相关推荐

  1. C++学习记录

    2024-03-19 15:36:02       36 阅读
  2. C++_List学习

    2024-03-19 15:36:02       11 阅读
  3. C++学习C++特殊类设计

    2024-03-19 15:36:02       11 阅读
  4. C++学习:string了解

    2024-03-19 15:36:02       18 阅读
  5. 如何系统学习 C#

    2024-03-19 15:36:02       18 阅读
  6. 学习c#第二十四天

    2024-03-19 15:36:02       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-19 15:36:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-19 15:36:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-19 15:36:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-19 15:36:02       18 阅读

热门阅读

  1. vue项目- el-table表格合并行

    2024-03-19 15:36:02       18 阅读
  2. Prometheus云原生监控笔记

    2024-03-19 15:36:02       17 阅读
  3. c++希尔排序

    2024-03-19 15:36:02       17 阅读
  4. AI论文:中国A股市场长期牛市的先决条件研究

    2024-03-19 15:36:02       18 阅读
  5. ZYNQ NE10 裸机(standalone)

    2024-03-19 15:36:02       20 阅读
  6. Pytorch nn.Module

    2024-03-19 15:36:02       19 阅读
  7. amazon linux 2023安装redis6

    2024-03-19 15:36:02       21 阅读