每隔一段时间,我就必须在我编写的大部分代码(无论是工作还是播放)之间切换语言.我发现C++是那些需要大量心理缓存空间的语言之一,所以如果我从中休息一段时间,那么我会忘记很多细节.即使是像将项目添加到一个STL容器,或使用的东西static
在不同的上下文中存储的关键字得到所有混乱的("是add
,append
,push
...哦,这是push_back
").
那么当你编写C++时,你喜欢什么基本的花絮加载到你的大脑中?
编辑:我应该说,我希望能够为此页面添加书签并将其用作我的备忘单:)
当我从Java切换回C++时,我喜欢回顾Herb Sutter和Andrei Alexandrescu撰写的C++ Coding Standards中的项目.
Scott Meyers的Effective C++系列也非常适合这一点.
以下是适合我的快速基本内容:
使用 std::swap()
"当有疑问时,就像投注那样做." (斯科特迈耶斯)
const *
表示常量数据,* const
表示常量指针(向后读取decl!).
在具有动态分配数据的类中声明赋值运算符和复制构造函数.
如果你自己没有声明,C++会为你编写赋值运算符和复制构造函数.除非你声明它们(私有的,最有可能的)并且省略它们来定义它们.
让operator =()返回一个引用 *this
在Derived的复制构造函数的init列表中调用Base(rhs).
打电话给Base::operator=(rhs);
Derived'soperator=()
检查自我分配 operator=()
不要operator=()
通过调用复制构造函数来实现(Herb Sutter,写下你所知道的,知道你写的是什么)
记住RAII
通过引用捕获异常
在我的备忘单上:const和指针之间的交互:
int * p; // pointer int const * p; // pointer to const value int * const p; // const pointer int const * const p; // const pointer to const value
本质上,在*
符号上拆分声明,如果const落在左边,指向的值是const,如果它落到右边,指针本身就是const.
我保持打开C++标准的PDF.它很适合快速查找所有库接口(特别是容器接口和iostream的东西).它对于快速解决同事关于C++语法和语义的争论也很有用.
我还没弄明白如何将PDF加载到我的大脑中.
由于我一直在使用C++,因此我将大部分语法都保留在脑海中.对于图书馆参考,我使用sgi和Josuttis的书.当我还没有完成C++一段时间并且真的想要复习时,我会回到Effective C++.
当我需要更深入的问题时,我会参考标准或Stroustrup的书.
当所有其他方法都失败时,google和stackoverflow都是很棒的工具.
每次我必须这样做,我需要看一下这个.真正处理函数指针细节的任何东西总是倾向于调整我的大脑.我发现函数指针教程是一个相当不错的参考.
在我的C Cheatsheet上(以及在扩展的C++上),指向函数语法的指针.