您的位置:首页 > 编程语言 > C语言/C++

[Boolan] C++第一周学习笔记

2017-01-13 15:45 169 查看
1.尽可能引用参数,尽可能inline

先说说inline,按我以前的思路来看,inline相当于直接把函数实现代码复制到函数应该执行的地方,但是会引起代码量变多,特别是一些复杂的函数,代码就会膨胀,不过按照老师的说法:实际是否真的是inline是由编译器决定的?那么正常的做法,果然还是要挑一些简单的函数加inline比较好。顺便inline是不能和函数声明放一起的,想想也是^_^

顺便截取一段深度探索c++对象模型里的话(好吧 我取得是翻译版的):每一个 non-inline member function只会产生一个函数实体,至于每一个"拥有零个或一个定义“的inline member function 则会在每一个使用者(模块)身上产生一个函数实体。

参数尽量引用,这点很容易理解,毕竟大部分情况下,传地址的速度要比整个内容都传过去要快得多。

不太熟悉的是函数的返回值什么时候返回引用的问题,查阅资料后按个人理解总结以下几点:

(1)课程示例里一个比较明显的情况是类似于a=b=c这种连续操作的问题,b=c的返回结果x必须符合a=x时操作符处理的格式。

(2)要返回引用的话,肯定不能返回局部变量的引用,因为生命期到了以后这个引用就脏了?

(3)返回引用的话,结果是一个左值。

2.const的问题

const修饰参数或者函数返回值,即表示参数/返回值是不能修改的。

另外对于类成员函数来说 f() const {} 表示这个函数不会修改类成员,这样的话,如果声明了一个const的对象,那么这个对象只能调用上述成员函数,没有加const的是没法调用的,按照老师说法,没加const,编译器会理解为:这个函数回去修改内部成员。

以前好像还听某人说过,习惯性地要把该标const的地方都好好标上:虽然大部分情况下标和不标区别不大,但是这同时也体现了作者的思路,标上const也是有利于别人阅读你的代码

3.临时变量

第一次听说原来还有临时变量……但是其生命太有限,如果想要延长的话,需要用const的引用去指向它,这么一来它的生命这周期会延长到那个引用变量的生命周期。然后问题就来了,群里的萧然提了拷贝构造函数的事,个人小白,就跟着去看相关的资料,结果左值引用,右值引用各种概念开始冒出来,看的我晕乎乎后总结如下:

(1)左值是有名字的,有作用域(生命期?)的,右值是临时的,有时候用右值引用作参数,但是因为在函数里已经有了个名字,有了生命期,所以其实它已经不是右值了,具体要用move变成右值引用,但是太迷糊了,没法继续说……

(2)临时变量可以用右值引用或者const 左值引用延长生命期,可以说c++里右值引用就是为了这种临时变量存在的?因为用const的左值引用就不能修改内容了

4.友元

是朋友的就可以直接调用内部成员,顺便同类即朋友

5.返回方是不考虑接收方的类型的

貌似T a=b 和T &a=b 一个是把内容全复制过去,一个只是地址上的赋值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: