笔者注:本人并不精通c++,虽然面向对象的概念是非常相通的,但是实现方式上各个语言个有不同。所以这一篇如有错误,还请指正。这篇读书笔记只关注了一些概念,语言细节上都略了过去。因为如果你想学c++,这些细节到处都有介绍。一天时间就能熟悉。而概念上的透彻理解,才能让人对所有编程语言有醍醐灌顶的宏观把握。
面向对象编程的关键是把一些数据和对这些数据进行操纵的代码组合在一起。
关于面向对象,可以去看本人之前的文章:《松本行弘的程序世界》笔记1 面向对象(上)
面向对象编程的特点是继承和动态绑定。c++通过类的派生支持继承,通过虚拟函数支持动态绑定,虚拟函数提供了一种封装类体系实现细节的方法。
类把代码和相关数据封装(捆绑)在一起。
类经常被实现的形式是:一个包含多个数据的结构,加上对这些数据进行操作的函数的指针。编译器施行强类型——确保这些函数只会被这类的对象调用,而且该类的对象无法调用除它们之外的其他函数。
美女一类
类的访问控制、访问控制、声明、调用成员函数、继承、多重继承(略)
重载 运算符重载 overload就是简单的复用一个现存的名字,但使它操作一个不同的类型。
多态:通过覆盖override支持这种机制——所有的多态成员函数具有相同的名字,由运行时系统判断哪个最为合适。
多态是指一个函数或操作符只有一个名字,但它可以用于几个不同的派生类型的能力。每个对象都实现该操作的一种变型,表现出一种最为适合自身的行为。它始于覆盖一个名字——对同一个名字进行复用,代表不同对象中的相同概念。多态非常有用,因为它意味着可以给类似的东西取相同的名字。运行时系统在几个名字相同的函数中选择了正确的一个进行调用,这就是多态。与virtual相关。这种虚函数很好的名字是placeholder。
单继承通过在每个对象内包含一个vptr指针来实现虚拟函数。vptr指针指向一个角vtbl的函数指针向量,也称虚拟函数表。每个类都有这样一个向量。类中的每个虚拟函数在该向量都有一条记录。多重继承的情况需要另外一层的间接形式。
模版、内联函数、传引用调用(略)
本书作者认为c++语言十分庞杂错综,因此一个程序员只需要选择使用c++的一个简单子集即可:
一门语言,如果它的结构是有用的“建构块”,便于堆积起来解决某个特定领域的问题,它就能获得成功。
留言与评论(共有 0 条评论) |