C++设计与演化读书笔记(一)

C++设计与演化读书笔记(一)

最近开始看这本书(C++设计与演化)了~C++之父执笔,以前尝试着看了下……但那时毕竟too naive……觉得没啥用。。但现在看来要想真正的用好一门语言,真的要追根溯源,这样才能更好的了解自己写的代码最终会变成什么东西……这些语言毕竟都是人定义的,因此每个特性都有其存在的意义,我想这本书应该能让我了解当时是为什么要加这些特性,以及这些特性带来了什么之类的~当然众多大神也是对这本书喜爱有加~,正好那天路过图书馆借到了(时间只有一个月。。),打算最近把这本书看完,以前看书都是把笔记直接记在书上……这次是借图书馆的,京东好像最近也没货,因此边看边回顾,还得整理好笔记方便以后回顾,毕竟这种书肯定得翻来覆去多看几遍才能有更好的理解,加油吧~


第二章 C with Classes

这章讲述了C++的前世,有着很多延续到现在的思想,可以说在当时作者就已经有了自己对于新语言的想法,就是有着高的效率(能与C媲美),并且能够更好的组织程序*


首先描述了C with Class是如何诞生的,用于分析一个网络系统的流量,大师首先写了个工具集Cpre后来又把自己的经验加进去,心里诞生了创造一种语言的想法,在C语言的基础上进行扩充,并且借鉴了Simula的风格。并且CwC(C with Classes)可以更好的组织程序;但同时需要考虑运行时的效率。
C with Classes 包含了一些基本的功能,可以参见P25页2.2特征概览
为了兼顾有C的效率,Bj也对CWC做了很多的改变,例如加入inline机制,在2.5连接模型中探讨了一个有意思的问题(P31) 两个变量是按名称等价(即其声明是相同的)或者是按照结构等价(声明不同,但内存结构是相同的),Bj更加偏向于按名称等价,这样更优美与严格,同时也必须知道,若两个结构相同,是可以进行显式转换的。

2.6静态类型检查:

指出CwC引入了静态类型检查,这里可以学习一下强类型和弱类型,例如C++就是强类型的,指的是在编译时就进行了类型的检查,而弱类型是变量第一次出现时才会有类型,例如Python。

2.9 派生类

此小节主要讲述
a.在没有虚函数时是如何实现多态的,书中的例子是通过动态的捕捉类型id然后通过switch进行调用。
b.没有模板的容器类,这个用到了宏,这部分没有掌握扎实~后面会补充下
c.对象布局模型:这个就像lippman写的insight c++ 书里的简单对象模型中的第一种(slots)在空间布局上是紧凑的,但每次改动时都要大量的进行重新编译(好像是这样的~~)

2.10 保护模型

此小节比较有意思,重温了很多概念,比如public/private继承,在书中提出了为实现性继承与接口性继承,这个值得思考,作者也列出了C++中的保护概念,我就摘录几个印象深刻的吧:

a 保护是通过编译时提供的;
b 访问权是由类本身授予 c 访问权控制是由名称实行的(相当于是由关键字决定的,和你参数或者函数的命名中有啥没关~)
d 保护的是类 e 受控制的是访问权,而不是可见性(这个书中给出了一个有意思的例子,值得深思)

关于e的解释,书中p47给出了一个具体的例子,可以有着深刻的理解,同时这个例子作者也挖了个坑,在类中声明的顺序不同,有可能访问的也不同,在书中第6章又换了个形式出现,<顺序依赖性>(6.3.1.1)这个通过描述全局变量与类里的成员发生了重复时应该如何处理的情况,这里的解决方式很简单,采用了两个规则,简单的就是说:若一个类型已经使用过,在其后就不能重定义 2是对于直接写在类成员里的函数,分析时按照先声明,然后在定义的方式进行




Previous     Next
SureD /
Published under (CC) BY-NC-SA in categories programming language  tagged with c++ 
分享到: 更多
>