Boolan Week3笔记

本周主要讲了

(1)Inheritance 继承

表示 is-a,代码 例如

class A

{ …};

class B: public A  // 用public继承较多,A为父类,B为子类

{…};

继承与虚函数一起使用最有价值,构造由内到外,析构由外到内。

base class 的 dtor 必须为 virtual , 否则会出现 undefined behavior。

(2)Composition 复合

表示 has-a,代码 例如

class Student

{

private:

string name;

valarray<double> scores;  //Student类,包含valarray类的成员。

…

};

复合构造由内而外,析构由外而内。

(3)Delegation 委托

Composition by reference. 代码 例如

Class A

{

private:

B*  refb;  // 用指针指向B类

};

A与B类不会同时创建,需要B类时才会创建。

(4)virtual function 虚函数

non-virtual函数:你不希望子类重新定义(override,复写)它。

virtual函数:你希望子类重新定义,并且你对它已有默认定义。

//用virtual去修饰成员函数即可使其成为虚函数

pure virtual函数:你希望子类一定要重新定义,你对它没有定义。

virtual void draw() const =0;

//纯虚函数子类必须全部定义后,父类才可以new。

//父类的析构函数必须为virtual。

//如果要想实现动态多态则必须使用虚函数

//普通函数不能是虚函数,也就是说这个函数必须是某一个类的成员函数,不可以是一个全局函数,否则会导致编译错误。

//静态成员函数不能是虚函数 static成员函数是和类同生共处的,他不属于任何对象,使用virtual也将导致错误。

//内联函数不能是虚函数 如果修饰内联函数 如果内联函数被virtual修饰,计算机会忽略inline使它变成存粹的虚函数。

//构造函数不能是虚函数,否则会出现编译错误。

部分引用于 http://www.cnblogs.com/jin521/p/5602190.html

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 多态(1)静态多态与动态多态 什么是多态 从字面上理解就是多种形态的意思。而多态一词最初源自希腊语,其含义便是“多...
    kingZXY2009阅读 2,491评论 0赞 2
  • 1. 结构体和共同体的区别。 定义: 结构体struct:把不同类型的数据组合成一个整体,自定义类型。共同体uni...
    breakfy阅读 2,313评论 0赞 22
  • 1.组合与继承 1.1组合 1.1.1设计模式 Adapter-改造 现在我们设计了一个 功能很强大的类,但是我们...
    rrreal阅读 158评论 0赞 0
  • 1.组合与继承 1.1组合 1.1.1设计模式 Adapter-改造 现在我们设计了一个 功能很强大的类,但是我们...
    长江小杨阅读 357评论 0赞 0
  • 徐志军:顺风侠,光盘客,大家叫他徐侠客 公民徐侠客受到头条新闻关注: #66顺风日# 居然今天才发现这条帖子!感恩...
    慧好聊吧阅读 1,199评论 3赞 3

友情链接更多精彩内容