你的C ++作弊表上有什么?
每隔一段时间,我就必须在我编写的大部分代码(无论是工作还是玩游戏)之间切换语言。 我发现C ++是那些需要大量心理caching空间的语言之一,所以如果我从这个caching中抽出很长时间,那么我会忘记很多细节。 甚至像在STL容器中添加项目或在各种上下文中使用static
存储关键字一样,所有的东西都变得混乱起来(“ add
, append
, push
…哦,它是push_back
”)。
那么当你编写C ++的时候,你喜欢把什么重要的东西加载到你的脑中呢?
编辑:我应该说,我希望能够collections本页,并将其作为我的cheatsheet 🙂
当我从Java切换回C ++时,我喜欢从Herb Sutter和Andrei Alexandrescu的C ++编码标准中查看项目。
斯科特·迈耶斯的Effective C ++系列也非常棒。
这里是快速的基本东西,为我工作:
- 使用
std::swap()
- “如有疑问,请按照整数进行。” (斯科特·迈耶斯)
-
const *
表示常量数据,* const
表示常量指针(向后读取decl!)。 - 在具有dynamic分配数据的类中声明赋值运算符和复制构造函数。
- 如果你不自己声明一个,C ++会为你写一个赋值操作符和拷贝构造函数。 除非你宣布他们(私人,很可能),并且省略定义它们。
- 运算符=()返回
*this
的引用 - 在Derived的复制构造函数的init列表中调用Base(rhs)。
- 调用
Base::operator=(rhs);
在派生的operator=()
- 在
operator=()
检查赋值给self - 不要通过调用复制构造函数来实现
operator=()
(Herb Sutter, 写下你所知道的,并且知道你在写什么 ) - 记得RAII
- 通过引用来捕获exception
在我的作品中: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的书。
当一切都失败时,谷歌和stackoverflow是伟大的工具。
在我的C Cheatsheet(以及C ++中的扩展)上,指向函数语法的指针。
实现对非静态C ++成员函数的callback
每次我必须这样做,我需要看这个。 真的,处理函数指针细节的任何事情总是倾向于调整我的大脑。 我发现函数指针教程是一个相当好的参考。
不是真的在备忘单上,而不是特定于C ++,但我有“冲洗缓冲区! 在粘滞便笺上提醒我什么时候我没有收到数据可能是错误的。
我使用网站cplusplus.com 。 这是C和C ++编程的一个很好的参考。
模板专业化。 我总是需要查找它。
我有一个运算符优先级图表的一个副本钉在我的立方体墙上。
Scott Meyer的TR1摘要页面, http://www.aristeia.com/EC3E/TR1_info.html
就运营商而言, cpp.operator-precedence.com
实际上,让我在C#和C ++之间切换最多的是构造函数语法。 (我一直想用“新”的一切)。
用于STL和其他标准<include>的Dinkumware Compleat Reference 。
对于那些想快速参考和回顾的人来说,这里有C ++ Cheat Sheet
C ++作弊表 – 第1部分
C ++作弊表 – 第2部分
访问谷歌和input足够的能力。
无可否认,我在工作环境中获得了近乎保证的networking访问。 如果不出于任何原因,我也有三个标准PDF文件。
这个缺点是在C ++访谈的实际Q&A部分中的猜测/知识比率很高。 好处是,我非常擅长我的工作。 :P