C++ 2024-4-1 作业

 

#include <iostream>
using namespace std;

class A
{
public:
    int a;
    A(int a):a(a){cout<<"A的有参构造"<<endl;}
};
class B:virtual public A
{
public:
    int b;
    B(int a,int b):A(a),b(b){cout<<"B的有参构造"<<endl;}
};
class C:virtual public A
{
public:
    int c;
    C(int a,int c):A(a),c(c){cout<<"C的有参构造"<<endl;}
};
//汇集子类
class D:public B,public C
{
public:
    int d;
    D(int a,int b,int c,int d):A(a),B(a,b),C(a,c),d(d){cout<<"D的有参构造"<<endl;}
    void show()
    {
        cout<<"d="<<d<<endl;
        cout<<"c="<<c<<endl;
        cout<<"b="<<b<<endl;
        cout<<"a="<<a<<endl;
    }
};
int main()
{
    //实例化汇集子类D的类对象
    D d1(10,20,30,40);
    d1.show();
    d1.a = 90;
    d1.show();//对于公共基类继承加上virual后,在汇集子类中只能找到一个属性a
    d1.B::A::a = 80;
    d1.C::A::a = 80;
    d1.show();
    return 0;
}

 

 

#include <iostream>

using namespace std;


class Father
{
    int *p;
    const string name;
public:
    Father():p(new int),name("张三"){cout<<"Father的无参构造"<<endl;}//Father的无参构造
    Father(int value):p(new int(value)),name("张三"){cout<<"Father的有参构造"<<endl;}
    Father(const Father &other):p(new int(*(other.p))),name("张三"){cout<<"Father的拷贝构造"<<endl;}
    Father &operator=(const Father &other)
    {
        this->p = other.p;//浅拷贝
        *(this->p) = *(other.p);//深拷贝
        cout<<"Father的拷贝赋值"<<endl;
        return *this;
    }
    ~Father()
    {
        delete p;
        cout<<"Father的析构函数"<<endl;
    }
    void show()
    {
        cout<<"p的指向"<<p<<endl;
        cout<<"*p="<<*p<<endl;
        cout<<"name = "<<name<<endl;
    }
};
class Son:public Father
{
    int *age;
public:
    Son(){};//Son的无参构造;
    Son(int age):Father(),age(new int(age)){cout<<"Son的有参构造"<<endl;}
    Son(int age,int value):Father(value),age(new int(age)){cout<<"Son的有参构造"<<endl;}
    using Father::Father;//使用父类的构造函数
    Son(const Son &other):Father(other),age(new int(*(other.age))){cout<<"Son的拷贝构造"<<endl;}
    Son &operator=(const Son &other)
    {
        *(this->age) = *(other.age);
        Father::operator=(other);
        return *this;
    }//Son的拷贝赋值函数
    ~Son()
    {
        delete  age;
        cout<<"Son的析构函数"<<endl;
    }
};
int main()
{
    Son s1(20,30);
    s1.show();
    Son s2 = s1;
    s2.show();


    return 0;
}

 

 

相关推荐

  1. 2024.4.8作业

    2024-04-02 05:24:05       32 阅读
  2. 2024.4.9作业

    2024-04-02 05:24:05       37 阅读
  3. 2024.4.19作业

    2024-04-02 05:24:05       35 阅读
  4. <span style='color:red;'>4</span>.<span style='color:red;'>1</span><span style='color:red;'>作业</span>

    4.1作业

    2024-04-02 05:24:05      33 阅读

最近更新

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

    2024-04-02 05:24:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-02 05:24:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-02 05:24:05       87 阅读
  4. Python语言-面向对象

    2024-04-02 05:24:05       96 阅读

热门阅读

  1. 在保存原容器的情况下重新安装docker

    2024-04-02 05:24:05       40 阅读
  2. http协议中的“队头阻塞”问题

    2024-04-02 05:24:05       37 阅读
  3. 在CentOS 7上如何添加交换空间

    2024-04-02 05:24:05       39 阅读
  4. 告别PCA,开始玩高阶的PLS-DA

    2024-04-02 05:24:05       38 阅读
  5. 如何在Bash中连接字符串变量

    2024-04-02 05:24:05       31 阅读
  6. 「PHP系列」数组详解

    2024-04-02 05:24:05       39 阅读
  7. C#WPF自定义控件-继承Button的圆角按钮

    2024-04-02 05:24:05       31 阅读
  8. pytorch剪枝

    2024-04-02 05:24:05       40 阅读
  9. 影视站点为何需要多IP服务器

    2024-04-02 05:24:05       34 阅读
  10. UltraScale系列底层结构(1)——引言

    2024-04-02 05:24:05       36 阅读
  11. 技术与安全的交织

    2024-04-02 05:24:05       38 阅读
  12. spring AOP和AspectJ AOP的区别

    2024-04-02 05:24:05       34 阅读
  13. 零基础10 天入门 Web3之第2天

    2024-04-02 05:24:05       36 阅读
  14. HarmonyOS 应用开发之XML生成、解析与转换

    2024-04-02 05:24:05       27 阅读