这个问题试图收集每年出版的数十本不良C++书籍中的少数珍珠.
与许多其他编程语言不同,这些编程语言经常从互联网上的教程中随处获取,很少有人能够快速学习C++,而无需学习编写精良的C++书籍.这样做太复杂了.事实上,它是如此庞大和复杂,有很多非常糟糕的C++书籍.我们并不是在谈论糟糕的风格,而是体育明显的事实错误和促进糟糕的编程风格.
请编辑接受的答案,以提供高质量的书籍和近似的技能水平 - 最好 在 C++聊天室讨论您的添加后.(如果他们不同意建议,常客可能会毫不留情地撤销你的工作.)添加一篇关于你亲自阅读/受益的每本书的简短描述/描述.随意讨论质量,标题等.符合标准的书籍将被添加到列表中.由C和C++用户协会(ACCU)撰写评论的图书都有指向评论的链接.
*注意:常见问题和其他资源可以在C++标签信息和c ++ - faq中找到.
我知道C++中有三个而不是两个内存区域:堆栈,堆和静态分配功能的区域.我有两个问题
为什么堆比堆栈慢得多?当然它应该只是一个额外的间接水平?
为静态"特性"(变量,函数,类)分配的内存区域是否提供比堆更快的性能?
我对C++中的内存分配感到困惑,例如Const数据区,Stack,Heap,Freestore,Heap和Global/Static区域.我想了解以下代码段中的内存分配模式.任何人都可以帮助我理解这一点.如果除了示例中提到的变量类型之外还有更多的东西可以帮助更好地理解概念,请更改示例.
class FooBar
{
int n; //Stored in stack?
public:
int pubVar; //stored in stack?
void foo(int param) //param stored in stack
{
int *pp = new int; //int is allocated on heap.
n = param;
static int nStat; //Stored in static area of memory
int nLoc; //stored in stack?
string str = "mystring"; //stored in stack?
..
if(CONDITION)
{
static int nSIf; //stored in static area of memory
int loopvar; //stored in stack
..
}
}
}
int main(int) …Run Code Online (Sandbox Code Playgroud)