Boolan面向对象上第三周笔记

一、继承

定义:新的类从已有类那里得到已有特性,原有类称为父类,新类称为子类。

形式:

class<派生类名>:<继承方式><基类名>

{

<派生类新定义成员>

};

二、复合(composition)

表示has a的关系,构造由内而外,析构由外而内。

三、委托

委托 是一种以指针方式的复合,一个类中有指针指向另外一个类。

classStringRep;//一个类

classString {public:    String();    //另外一个

String(constString&s)    String &operator=(constStirng&s);    

~String();

private:    StringRep* rep;//指针

};

四、虚函数与多态

1、non-virtual函数 : 不希望derived class 重新定义

2、 virtual函数 : 允许子函数修改

base class的析构函数必须是virtual,否则会出现undefined。

假设有下面这个类:

class Base {

public:

virtual void f( ) { cout << "Base::f" << endl; }

virtual void g( ) { cout << "Base::g" << endl; }

virtual void h( ) { cout << "Base::h" << endl; }

};

我们可以通过Base的实例来得到虚函数表。

Base b;

cout << "虚函数表地址:" << (int*)(&b) << endl;

cout << "虚函数表 — 第一个函数地址:" << (int*)*(int*)(&b) << endl;

五、设计模式

1、Template Method

预先写好框架,预留一些步骤的实现给子类。

C++ 中继承中的虚函数即可完成这样的功能。

2、Observer

观察者模式,,当其中的一个改变时,所有其它依赖的对象都能自动更新。

六、补充


Boolan面向对象上第三周笔记_第1张图片

你可能感兴趣的:(Boolan面向对象上第三周笔记)