面向对象
Composition(组合),表示 has-a
class B 中有一个 A 的 object
创建 B 的对象的时候会默认调用 A 的构造函数,如果需要调用 A 的有参数的构造函数,需要指明。
class A{
private:
...
public:
A() { ... }
A(int a) { ... }
...
};
class B{
private:
A a;
public:
B(int a) : A(a) {
...
}
...
};
Inheritance(继承),表示 is-a
class B 是一种 A
- 数据继承:B 中有 A 的 所有数据。被 protect 修饰的除外。
- 函数继承:B 中没有 A 中的函数, B 作为 A 的派生类, B 拥有 A 中函数的调用权。
// 例如:A 表示鸟
class A {
...
};
// 例如:B 表示鹦鹉
class B : public A {
...
}
Delegation(委托) Composition by reference
编译防火墙,当 A 改动的时候,编译的时候无需再次编译 B,只需要编译 A 就好了。
class A {
...
};
class B {
private:
A* a;
...
};
网友评论