geekbandC++面向对象高级编程(上)笔记

2016-10-02  本文已影响0人  菜鸟游侠k2

第一感觉是好基本


推荐了c++primer和c++

programming language

然后推荐了effectivec++

然后推荐c++11标准库第二版英文


主要的总结

复习

构造函数的initializationlist要会用

函数加不加const,该加加

参数传递尽量用reference

数据尽量都放private函数适当public

一开始防卫式编程

#ifndef?

#define?

#endif

写类

1数据注意private

构造函数名称等于类名,没有返回值

函数设计是否需要默认值

构造函数最好用初值列,剩下的{}写你要写的

所有函数你要考虑const

想好friend(friend更快但是不安全

成员函数自带this

以下参考价值不大



防卫式声明

不能多次include


先写12然后发现有些需要前置声明写0


如果函数是inline的,会比较快比较好

如果函数太复杂就没有办法inline(inline是否真的有效由编译器决定

定义在本体里面定义,就是inline

后面出现的,不在本体内定义的也可以加inline


Accesslevel讲的很浅。。。

默认实参其他函数也可以用,查证了,有默认实参的要放在右边


这个语法是构造函数独有,initializationlist初始列

这种写法比较正规。。。(大气。。。

合理的说法是简单说变量有两个步骤有初始化,然后有assign这样写会比较快。

函数后置的const只用来类的费静态成员后面,(其他地方error)除非成员加了mutable不容不能改动类中的任何成员。。

Const对象只能调用const的成员函数

http://zhidao.baidu.com/link?url=SVyAiSChbzcvTNIWuQP8RbfleHxTYJPgtSbGtpm5dOQM3M7FHZzqy0UVmqL5zNOu7lHIyXdgYVxtmshIWhq-nK

http://blog.sina.com.cn/s/blog_4dd77fd10100lug5.html

重载的编译器实现,就是ppt右下角的。从编译器角度上(不允许名称完全相同的函数)

构造函数常常重载

右上角的的调用,会导致左边的1

2有二义性

构造函数放在private区,singleton


不改变数据内容的时候加上const

万一你没有加上,说明你写的时候可能会改变,使用者说我不会改,那么用户调用的时候,就会挂掉。出现这种情况,说明设计不好,该加的时候不加


尽量不要passby value

引用在底部相当于指针,形式比较漂亮。

Char1个字节的话,pass by

reference比pass by value快。。

Passby reference你需要的话加const

返回值尽量byreference会快但是有的时候不可以(后面来讲。。。。)

友元可以访问private

通过函数拿,稍微慢一点。用友元会快一点,但是封装会有问题


这样的是对的。原因是头上那句话。


下面是示范的用法。

总结1数据放在private

2参数用reference来传

3参数可以的话用reference来传

4在类的本体的函数应该加const的就要const,可能使用者用会报错

5构造函数的initializationlist尽量去用


二元运算符隐藏的this

不能用returnby reference,返回值之前是没有的,所以是一个localobject

和之前的比较,就是+只有一个输入参数

Question下面这个返回值是否可以是引用。(他的意思的用引用更优,我觉得隔离挺好的。。。

任何一个函数可以定位成员函数或者非成员函数、

<<这个操作符只能写成全局的函数因为cout不可能会认识你

不能加const写入cout会改变cout


复习

构造函数的initializationlist要会用

函数加不加const,该加加

参数传递尽量用reference

数据尽量都放private函数适当public


一开始防卫式编程

#ifndef?

#define?

#endif

写类

1数据注意private

构造函数名称等于类名,没有返回值

函数设计是否需要默认值

构造函数最好用初值列,剩下的{}写你要写的

所有函数你要考虑const

想好friend(friend更快但是不安全

成员函数自带this

上一篇下一篇

猜你喜欢

热点阅读