分享
 
 
 

《c++面向对象高效编程》读书笔记-1

王朝c/c++·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

今日偶得一书,《c++面向对象高效编程》(人民邮电出版社出版发行,美Kayshav Dattatri著,潇湘工作室译)。虽然以前学过c++但是最近一直用delphi,因为一直觉得vc里面有太多的东西不懂就没了兴趣,直到看了这本才感觉c++(单纯的语言)原来是这么有趣,于是又兴起了学习c++的强烈欲望。首先说一点,我这人往往心里一热感觉就来了,可是什么时候感觉会消失连我自己却也不知道。也许明天,也许一个小时后,呵呵,谁知道呢?不管那么多了,还是先看吧,因为我觉得这本书的确不错哦!呵呵。

为了改变以往的看书习惯,这次我决定做一下笔记,也许这能够让我坚持久一点点呢。如果你能看到,那就共同学习进步吧,我里面还有好多不明白的地方,也有好多可能理解错误的地方。盼遇高手指教,先行谢过了,嘿嘿!

---------------Rainspider(饶春阳)《c++面向对象高效编程》读书笔记

2005.06.13

一、面向对象的oop与思想

1、对象是类的一个或多个实例

程序运行中每个对象都保存有自己的数据副本,数据成员不共享(静态数据成员除外)。但是仅仅存在一份成员函数的实现代码的副本,各个对象(基于同一类)之间相互共享。

2、类的目的

一个设计优秀的类必须易于理解和使用,而不仅仅是一些纯函数的集合或者数据结构的“类”封装。一个类的良好实现不应该允许客户直接访问或者修改对象的状态(数据成员),状态只能由成员函数来修改,而客户只能使用那些合法的可以被客户使用的成员函数来操作对象。

3、继承和聚合

继承:从一般到特殊

聚合:一般在设计密封和共享

4、面向对象语言的特性:

支持数据抽象;封装;继承

继承是区别基于对象的语言和面向对象的语言的关键功能。

5、构造函数和析构函数是特殊的成员函数,没有任何返回值。

6、类中的函数:

1、构造函数;可以重载

2、析构函数;唯一性

3、复制构造函数;从现存对象中创建一个新的对象

4、赋值运算符;将现存对象明确的赋给另外一个现存对象

(以上函数在没有明确定义的情况下编译器会自动产生,但是往往不符合正确的要求,所以要求类的创建者定义)

5、运算符函数;运算符重载

6、一般成员函数(动态或者静态的)

2005.06.14

一、复制构造函数

1、在对象之间直接赋值的时候;clsssa a=b,定义a并且赋值,调用a的复制构造函数来实现。

2、把对象作为参数按值传送时,fun(classa a);为了实现形式参数的拷贝要自动调用复制构造函数。

*编译器自动调用复制构造函数。

二、在内存中创建一个新对象:

1、编译器得到对象本身所需要的内存(或程序员使用new显式分配需要的内存);

?此时内存中的数据未知;

2、将原始内存转换为对象,将数据成员或函数指针(有虚函数时)放置到位;

3、对这个对象调用其构造函数。

三、对象的释放

1、对于编译器自动创建的对象,在超出生命期后会自动释放:

a、先调用析构函数释放该对象在生存期内所申请的任何资源;(这样的析构函数释由程序员负责)

b、编译器释放对象本身所占内存,完成该对象的释放。

2、对于使用new显式创建的对象,必须手动释放

a、使用delete函数释放(相当于告诉编译器去执行1.a和1.b)。

四、赋值运算符“=”

1、对于语言内建的简单变量,如int,char会自动调用右值去覆盖左值;

2、对于对象,在没有定义的时候编译器会自动产生一个赋值运算符的实现函数,但是通常情况下需要自己来定义才符合要求;

对于obja=objb,可能objb中不仅仅包含对象本身的成员数据,还可能有其所拥有的其他资源或者数据。

为保证完成操作后两者所含内容完全一样,需要人工指定赋值运算符的函数实现。

对于右对象(源)中或者左对象中有其他除对象本身外的任何资源的情况,一般必须在实现函数中先释放左对象的资源再重新申请(和源大小相同)再进行复制。可以避免内存泄露或者出现无正常可用内存的情况发生。

六、一些需要注意的地方:

1、重载函数防止出现二义性;

2、析构函数只能有一个;

3、在实现赋值运算符函数的时候必须防止有a=a的情况发生,可通过核对左右对象的地址来判断;

4、赋值操作a=b后(赋值运算符函数)必须返回对对象a的引用。否则a=b=c将不能实现。

;-------------------------------------;

;以下笔记将按书上章节顺序编号;

;-------------------------------------;

3.5 this指针和名称修正

类的成员函数由编译器象实现其他函数一样来对待,这就引出:

1、为保证所实现的成员函数能够访问到调用它的对象,该对象的地址总是作为this指针传递到函数的第一个参数。不管你有没有在函数声名中指出这个参数,编译器总是把它放在所有参数的前面。

2、为保证任意一函数都有自己特定的名称,编译器会进行名称修正。了解名称修正有助于查看连接器的输出信息。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有