C++组合,继承,委托,多态_boolan

来源:互联网 发布:js监听页面刷新时间 编辑:程序博客网 时间:2024/06/10 22:19

C++组合,继承,委托,多态


       复合(has-a/n),类中有其他类对象(有了外部就有内部,生命是一起出现的)
例如:
        struct里面可以有其他的结构,字符串。。(component概念)

复合关系下的构造和析构
  ******
默认构造函数如果不符合意愿,调用内部的什么参数就需要自己写


       委托(composition by reference),类中有其他类的指针,需要时调用,把任务委托给其他类(分工大类为接口,小类为实现内容 Handle/Body(pImpl)),同component区别,委托有外部就有内部,生命是相关联一起出现

       继承(public, private, protected)is-a,子类有父类的成分在里面,子类继承父类数据成员和成员方法,继承与虚函数搭配最有价值。
继承关系下的构造与析构
  ******
如果类是一个父类或将来会是一个父类就把析构函数定义为虚函数且必须是虚函数,否则会出错

继承和虚函数(多态)
        non-virtual函数:你不希望子类,或派生类重新定义(override,复写)它
        virtual函数:你希望derived class重新定义它,且你对它已有默认定义,运行时将运行子类定义的函数。子类复写虚函数时需要加virtual
        pure virtual函数:你希望子类一定要重新定义它,你对它没有默认定义(可以有定义)
数据被继承将占用内存的一部分,而函数继承的是调用权(子类可调用父类的函数)。

23个设计模式之(Template Method)
        先把固定可以写好的先写好,留下无法无法决定的函数作为虚函数让子类去定义它(虚函数类似于父类里面有一个动作延缓到子类里面去定义)
eg:
       CMyDoc myDoc;
       myDoc.OnFileOpen();
编译器格式为 :
        CDocument::OnFileOpen(&myDoc);
而&myDoc就是一个this指针,运行时将指向子类复写的虚函数

Inheritance(继承) + Composition(复合)关系下的构造和析构
        子类有父类成分又有component的部分,调用先后(练习题)
        子类中有父类部分,父类里面又有component的成分,构造次序先component在父类,析构相反。
        Delegation(委托)+Inheritance(继承)功能最强大

作业
*****

0 0
原创粉丝点击