侯捷P11面向对象编程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了侯捷P11面向对象编程相关的知识,希望对你有一定的参考价值。
目录
- 面向对象编程
- Composition(复合)
- 构造和析构
- Delegation(委托)
- Inheritance(继承)
- 虚函数与多态
- 继承和composition关系下的构造和析构
- Delagation(委托)和Inheritance(继承)
- 关于虚函数与纯虚函数、非虚函数
面向对象编程
为什么需要面向对象编程?
为了让类和类之间发生关系。
Composition(复合)
表示has-a(有一个的关系)
构造和析构
其中红色的是C++为我们实现的。
Delegation(委托)
也叫Composition by reference(以指针复合)
Inheritance(继承)
表示is-a的关系
子类指向父类
继承函数,其实是继承的函数的使用权。
虚函数与多态
为什么会有这个模式?
一般地,可以先把共同的部分先写好,然后需要具体根据场景分别写的部分再交给子类完成。
继承和composition关系下的构造和析构
注意:这里的复合和继承都是先里面,后外面
对于第一种情况,经过测试先后顺序为:先继承,再复合
测试程序如下
// P12_test.cpp
// 测试composition和继承的先后关系
// 先继承---->再复合
#include <iostream>
using namespace std;
class A
private:
/* data */
public:
A(/* args */);
virtual ~A();
;
A::A(/* args */)
cout<<"A的构造函数"<<endl;
A::~A()
class B
private:
/* data */
public:
B(/* args */);
~B();
;
class A_son:public A
public:
A_son()
cout<<"A_son的构造函数"<<endl;
private:
B b;
;
B::B(/* args */)
cout<<"B的构造函数"<<endl;
B::~B()
int main(int argc, char const *argv[])
/* code */
A_son a_son;
return 0;
/*
输出结果为:
A的构造函数
B的构造函数
A_son的构造函数
所以得出结论:先继承---->再复合
*/
Delagation(委托)和Inheritance(继承)
关于虚函数与纯虚函数、非虚函数
以上是关于侯捷P11面向对象编程的主要内容,如果未能解决你的问题,请参考以下文章