C++day6

#include <iostream>

using namespace std;
class Zoo
{
private:
    string name; // 名称
    string y; // y
    int *age; // 年龄
public:
    Zoo(); // 无参构造函数
    Zoo(string name,string y,int age); // 有参构造函数
    Zoo(const Zoo &other); // 拷贝构造函数
    Zoo & operator=(const Zoo &other); // 拷贝赋值运算符
    ~Zoo(); // 析构函数
};
Zoo::Zoo(){cout << "Zoo::无参" << endl;} // 无参构造函数实现
Zoo::Zoo(string name,string y,int age):name(name),y(y),age(new int(age)){cout << "Zoo::有参" << endl;} // 有参构造函数实现
Zoo::Zoo(const Zoo &other):name(other.name),y(other.y),age(new int(*(other.age))){cout << "Zoo::拷贝构造" << endl;} // 拷贝构造函数实现
Zoo & Zoo::operator=(const Zoo &other)
{
    name = other.name; // 名称赋值
    y = other.y; // y赋值
    age = new int(*(other.age)); // 年龄赋值
    return *this; // 返回当前对象
    cout << "Zoo::拷贝赋值" << endl; // 输出提示信息
}
Zoo::~Zoo(){delete age;age = nullptr;cout << "Zoo::析构" << endl;} // 析构函数实现
class Dog:protected Zoo
{
private:
    int *a; // 腿的个数
public:
    Dog(); // 无参构造函数
    Dog(string name,string y,int age,int a); // 有参构造函数
    Dog(const Dog &other); // 拷贝构造函数
    Dog &operator=(const Dog &other); // 拷贝赋值运算符
    void speak(); // 叫声
    ~Dog(); // 析构函数
};
Dog::Dog(){cout << "Dog::无参" << endl;} // 无参构造函数实现
Dog::Dog(string name,string y,int age,int a):Zoo(name,y,age),a(new int(a)){cout << "Dog::有参" << endl;} // 有参构造函数实现
Dog::Dog(const Dog &other):Zoo(other),a(new int(*(other.a))){cout << "Dog::拷贝构造" << endl;} // 拷贝构造函数实现
Dog &Dog::operator=(const Dog &other)
{
    Zoo::operator=(other); // 调用基类的拷贝赋值运算符
    this->a = new int(*(other.a)); // a赋值
    return *this; // 返回当前对象
    cout << "Dog::拷贝赋值" << endl; // 输出提示信息
}
void Dog::speak()
{
    cout << "汪汪汪~~~" << endl;
}
Dog::~Dog(){delete a; a = nullptr;cout << "Dog::析构" << endl;} // 析构函数实现
int main()
{
    Dog z1("张三","黄",8,4); // 创建对象z1
    Dog z2 = z1; // 使用拷贝构造函数创建对象z2
    Dog z3; // 创建对象z3
    z3 = z1; // 使用拷贝赋值运算符赋值
    return 0; // 返回成功
}

#include <iostream>; // 包含输入输出流库

using namespace std; // 使用标准命名空间
class Animal // 定义动物类
{
public: // 公有访问权限
    Animal(); // 构造函数声明
    virtual void perform() = 0; // 纯虚函数声明
    ~Animal(); // 析构函数声明
};
class Cat:protected Animal // 定义猫类,继承自动物类并保护继承
{
private: // 私有访问权限
    string name; // 名称
    string trait; // 特征
public: // 公有访问权限
    Cat(); // 构造函数声明
    Cat(string name,string trait); // 带参构造函数声明
    void perform(); // 执行函数声明
    ~Cat(); // 析构函数声明
};
class Dog:protected Animal // 定义狗类,继承自动物类并保护继承
{
private: // 私有访问权限
    string name; // 名称
    string trait; // 特征
public: // 公有访问权限
    Dog(); // 构造函数声明
    Dog(string name,string trait); // 带参构造函数声明
    void perform(); // 执行函数声明
    ~Dog(); // 析构函数声明
};
Dog::Dog(){} // 狗类无参构造函数实现
Dog::Dog(string name,string trait):name(name),trait(trait){} // 狗类带参构造函数实现
void Dog::perform(){cout << name << " " << trait << endl;} // 狗类执行函数实现
Dog::~Dog(){} // 狗类析构函数实现
Cat::Cat(){} // 猫类无参构造函数实现
Cat::Cat(string name,string trait):name(name),trait(trait){} // 猫类带参构造函数实现
void Cat::perform(){cout << name << " " << trait << endl;} // 猫类执行函数实现
Cat::~Cat(){} // 猫类析构函数实现
Animal::Animal(){} // 动物类无参构造函数实现
Animal::~Animal(){} // 动物类析构函数实现
int main() // 主函数入口
{
    Cat a("喵","火力冲击"); // 创建猫对象a
    a.perform(); // 调用猫对象a的执行函数
    Dog b("汪","水漫金山"); // 创建狗对象b
    b.perform(); // 调用狗对象b的执行函数
    return 0; // 返回成功
}

 

【有道云笔记】C++.mindmap
https://note.youdao.com/s/8zn9E1DE

相关推荐

  1. MSc CDA Take-Home

    2024-03-19 20:14:02       60 阅读
  2. CDA一级备考策略分享

    2024-03-19 20:14:02       32 阅读
  3. CDA-LevelⅡ【考题整理-带答案】

    2024-03-19 20:14:02       50 阅读
  4. Spring Data访问Elasticsearch----CDI集成

    2024-03-19 20:14:02       36 阅读
  5. CDA Level Ⅰ 2023认证考试大纲

    2024-03-19 20:14:02       78 阅读
  6. web server apache tomcat11-33-CDI

    2024-03-19 20:14:02       33 阅读
  7. Spring Data访问 MongoDB(十六)----CDI集成

    2024-03-19 20:14:02       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-19 20:14:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-19 20:14:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-19 20:14:02       82 阅读
  4. Python语言-面向对象

    2024-03-19 20:14:02       91 阅读

热门阅读

  1. JDK发布信息、历史及未来规划

    2024-03-19 20:14:02       48 阅读
  2. azure databricks 常用的JDBC连接

    2024-03-19 20:14:02       47 阅读
  3. C++/C#/QT 绝对路径和相对路径设置

    2024-03-19 20:14:02       46 阅读
  4. 2024.3.19每日一题

    2024-03-19 20:14:02       42 阅读
  5. Linux重命名文件有几种方法

    2024-03-19 20:14:02       47 阅读
  6. python线程的使用和介绍

    2024-03-19 20:14:02       44 阅读
  7. Vue箭头函数还原为匿名函数示例

    2024-03-19 20:14:02       47 阅读
  8. 24.1 SpringCloud电商实战一刷

    2024-03-19 20:14:02       37 阅读
  9. @Builder用法

    2024-03-19 20:14:02       44 阅读
  10. IPD流程学习

    2024-03-19 20:14:02       36 阅读
  11. 富格林:曝光暗箱细节确保安全

    2024-03-19 20:14:02       44 阅读