美文网首页
Boolan面向对象上第三周笔记

Boolan面向对象上第三周笔记

作者: Chuankuei | 来源:发表于2017-10-31 16:45 被阅读0次

    一、继承

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

    形式:

    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面向对象上第三周笔记

          本文链接:https://www.haomeiwen.com/subject/krbbpxtx.html