zoukankan      html  css  js  c++  java
  • C++:三种类间关系

    https://www.cnblogs.com/yiluyisha/p/9108626.html

    Inheritance(继承)

    - 表示 is-a ,如下代码所示:

    复制代码
    class A {
    private:
        int a;
    };
    
    class B : public A {
    private:
        int b;
    };
    复制代码

    - 继承关系下的构造和析构:

     构造由内而外

     Derived的构造函数首先调用Base的default构造函数,然后才执行自己。如,Derived::Derived(...) : Base() { ... };

     析构由外而内

     Derived的析构函数首先执行自己,然后才调用Base的析构函数。如,Derived::~Derived(...) { ... ~Base() };

    - 注意:

     base class 的 dtor 必须是virtual,否则只会调用基类的析构函数,而不会调用派生类的析构函数;

    Composition(复合)

    - 表示 has-a ,如下代码所示:

    复制代码
    class A {
    private:
        int a;
    };
    
    class B {
    private:
        A a;
        int b;
    };
    复制代码

    - 复合关系下的构造和析构:

     构造由内而外

     B的构造函数首先调用A的default构造函数,然后才执行自己。如,B::B(...) : A() { ... };

     析构由外而内

     B的析构函数首先执行自己,然后才调用A的析构函数。如,B::~B(...) { ... ~A() };

    Delegation(委托)

    - Composition by reference, 如下代码所示:

    复制代码
    class A {
    private:
        int a;
    };
    
    class B {
    private:
        A* a;
        int b;
    };
    复制代码
  • 相关阅读:
    ELK-安装logstash
    ELK-安装kibana
    ELK-Elasticsearch安装
    springboot+springcloud集成jar
    nginx普通配置/负载均衡配置/ssl/https配置
    apidoc @apiGroup兼容中文
    Jenkins定时构建时间设置
    nginx配置ssl证书实现https访问
    骚胖选股法
    Dockerfile 时区设置
  • 原文地址:https://www.cnblogs.com/Vancamel/p/11205202.html
Copyright © 2011-2022 走看看