首页 > 编程语言 > 详细

C++:三种类间关系

时间:2018-05-30 01:05:16      阅读:233      评论:0      收藏:0      [点我收藏+]

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;
};

 

C++:三种类间关系

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!