Google C++编程气势指南(四):智能指针和其他C++特点[VC/C++编程]
本文“Google C++编程气势指南(四):智能指针和其他C++特点[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
1.关于智能指针,安全第1、便利第二,尽大概部分化(scoped_ptr); 2.引用形参与上const,不然利用指针形参;3.函数重载的利用要清楚、易读;4.鉴于简单误用,禁止利用缺省函数参数(值得商榷);5.禁止利用变长数组;6.公道利用友元……
Google特有的风情
Google有很多自己实现的使C++代码越发结实的本领、功效,以及有异于别处的C++的利用方法.
1.智能指针(Smart Pointers)
假如确切需求利用智能指针的话,scoped_ptr完好可以胜任.在非常特别的情形下,比方对STL容器中对象,你应当只利用std::tr1::shared_ptr,任何情形下都不要利用auto_ptr.
“ 智能”指针看上去是指针,其实是附加了语义的对象.以scoped_ptr为例,scoped_ptr被销毁时,删除了它所指向的对象.shared_ptr也是如此,并且,shared_ptr实现了引用计数(reference-counting),从而只有当它所指向的最后一个对象被销毁时,指针才会被删除.
普通来说,我们偏向于计划对象隶属明确的代码,最明确的对象隶属是根本不利用指针,直接将对象作为一个域(field)或部分变量利用.另一种极度是引用计数指针不属于任何对象,这样计划的问题是简单招致循环引用或其他招致对象无法删除的诡异条件,并且在每一次拷贝或赋值时连原子操作城市很慢.
固然不举荐这么做,但有些时刻,引用计数指针是最简单有效的办理筹划.
译者注:看来,Google所谓的差别之处,在于尽大概避免利用智能指针:D,利用时也尽大概部分化,并且,安全第一.
其他C++特点
1.引用参数(Reference Arguments)
所以按引用传送的参数必须加上const.
定义:在C语言中,假如函数需求改正变量的值,形参(parameter)必须为指针,如int foo(int *pval).在C++中,函数还可以声明引用形参:int foo(int &val).
长处:定义形参为引用避免了像(*pval)++这样丑陋的代码,像拷贝构造函数这样的利用也是必须的,并且不像指针那样不承受空指针NULL.
缺陷:简单惹起曲解,因为引用在语法上是值却拥有指针的语义.
结论:
函数形参表中,全部引用必须是const:
void Foo(const string &in, string *out);
事实上这是一个硬性约定:输入参数为值或常数引用,输出参数为指针;输入参数可以是常数指针,但不能利用非常数引用形参.
在夸大参数不是拷贝而来,在对象生命期内必须一向存在时可以利用常数指针,最好将这些在注释中具体阐明.bind2nd和mem_fun等STL适配器不承受引用形参,这种情形下也必须以指针形参声明函数.
以上是“Google C++编程气势指南(四):智能指针和其他C++特点[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |