Questions tagged «c++-faq»

提供协作式,社区编辑的C ++常见问题解答

1
权威的C ++书籍指南和清单
这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 Наэтотвопросестьответына 堆栈溢出нарусском:КнигииучебныересурсыпоС++ 这个问题试图收集每年出版的数十本不良C ++书籍中的珍珠。 与许多其他编程语言不同,这些语言通常是在Internet上的教程中经常使用的,而没有学习一本写得很好的C ++书籍的人很少能够快速使用C ++。这样做太大,太复杂。实际上,它是如此之大和复杂,以至于有很多非常糟糕的C ++书籍。我们不是在谈论不良风格,而是诸如炫耀明显的事实错误和推广极差的不良编程风格之类的事情。 请编辑接受的答案,以提供优质的书籍和大致的技能水平- 最好 在 C ++聊天室中讨论添加内容之后。(如果常规员工不同意建议,他们可能会毫不留情地撤消您的工作。)为您亲自阅读/受益的每本书添加简短的简介/说明。随意讨论质量,标题等。符合条件的书籍将添加到列表中。具有C和C ++用户协会(ACCU)的评论的书籍具有该评论的链接。 *注意:常见问题解答和其他资源可以在C ++标签信息中和下面找到C ++常见问题。
4243 c++  c++-faq 





7
运算符重载的基本规则和惯用法是什么?
注意:答案是按照特定顺序给出的,但是由于许多用户是根据投票而不是给出时间来对答案进行排序的,因此以下是最有意义的顺序的索引: C ++中运算符重载的通用语法 C ++中运算符重载的三个基本规则 会员与非会员之间的决定 普通运算符重载 赋值运算符 输入和输出运算符 函数调用运算符 比较运算符 算术运算符 数组下标 指针类型的运算符 转换运算符 重载新的和删除的 (注意:这本来是Stack Overflow的C ++ FAQ的一个条目。如果您想批评以这种形式提供FAQ的想法,那么开始所有这些工作的meta上的发布将是这样做的地方。该问题在C ++聊天室中进行监控,该问题最初是从FAQ想法开始的,所以提出这个想法的人很可能会读懂您的答案。)

5
什么是复制和交换习语?
这个习语是什么,什么时候应该使用?它可以解决哪些问题?使用C ++ 11时,习惯用法会改变吗? 尽管在很多地方都提到过它,但是我们没有任何奇异的“这是什么”的问题和答案,所以就在这里。这是先前提到的地方的部分列表: 您最喜欢的C ++编码样式惯用法是什么:复制交换 在C ++中复制构造函数和=运算符重载:是否可能使用通用函数? 什么是复制省略及其如何优化复制和交换习惯 C ++:动态分配对象数组?


17
为什么只能在头文件中实现模板?
引用来自C ++标准库:教程和手册: 目前使用模板的唯一可移植方法是通过使用内联函数在头文件中实现它们。 为什么是这样? (澄清:头文件不是唯一的可移植解决方案。但是它们是最方便的可移植解决方案。)
1775 c++  templates  c++-faq 

12
什么是移动语义?
我刚刚结束了对Scott Meyers进行的有关C ++ 0x的Software Engineering广播播客采访。大多数新功能对我来说都是有意义的,除了一个功能,我现在对C ++ 0x感到非常兴奋。我仍然没有移动语义 ……这到底是什么?

21
为什么要使用指针而不是对象本身?
我来自Java背景,已经开始使用C ++处理对象。但是我想到的一件事是,人们经常使用指向对象的指针,而不是对象本身,例如以下声明: Object *myObject = new Object; 而不是: Object myObject; 或者,而不是使用函数testFunc(),像这样说: myObject.testFunc(); 我们必须写: myObject->testFunc(); 但是我不知道为什么我们要这样做。我认为这与效率和速度有关,因为我们可以直接访问内存地址。我对吗?
1598 c++  c++11  pointers  c++-faq 



11
什么是rvalue,lvalue,xvalue,glvalue和prvalue?
在C ++ 03中,表达式是rvalue或lvalue。 在C ++ 11中,表达式可以是: 右值 左值 值 总值 前值 两个类别已变成五个类别。 这些新的表达类别是什么? 这些新类别与现有的右值和左值类别有何关系? C ++ 0x中的rvalue和lvalue类别与C ++ 03中的类别相同吗? 为什么需要这些新类别?是WG21神只是想迷惑我们凡人?
1356 c++  expression  c++-faq  c++11 

6
为什么必须在何处以及为什么要放置“模板”和“类型名”关键字?
在模板,在那里,为什么我必须把typename和template上依赖的名字呢? 无论如何,从属名称到底是什么? 我有以下代码: template <typename T, typename Tail> // Tail will be a UnionNode too. struct UnionNode : public Tail { // ... template<typename U> struct inUnion { // Q: where to add typename/template here? typedef Tail::inUnion<U> dummy; }; template< > struct inUnion<T> { }; }; template <typename T> // …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.