这个问题试图收集每年出版的数十本不良C++书籍中的少数珍珠.
与许多其他编程语言不同,这些编程语言经常从互联网上的教程中随处获取,很少有人能够快速学习C++,而无需学习编写精良的C++书籍.这样做太复杂了.事实上,它是如此庞大和复杂,有很多非常糟糕的C++书籍.我们并不是在谈论糟糕的风格,而是体育明显的事实错误和促进糟糕的编程风格.
请编辑接受的答案,以提供高质量的书籍和近似的技能水平 - 最好 在 C++聊天室讨论您的添加后.(如果他们不同意建议,常客可能会毫不留情地撤销你的工作.)添加一篇关于你亲自阅读/受益的每本书的简短描述/描述.随意讨论质量,标题等.符合标准的书籍将被添加到列表中.由C和C++用户协会(ACCU)撰写评论的图书都有指向评论的链接.
*注意:常见问题和其他资源可以在C++标签信息和c ++ - faq中找到.
我最近了解到,构造函数在 C++ 中没有名称以及有关它们的其他一些信息。我还知道函数在 C++ 中有一种称为函数类型的类型。例如,
void func(int)
{
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码片段中, 的函数类型func为。 void (int)
现在,我想知道,由于构造函数是特殊的成员函数,那么它们是否也具有如上所示的类型。例如说我们有:
struct Name
{
Name(int)
{
}
};
Run Code Online (Sandbox Code Playgroud)
上面所示的构造函数是否也像普通函数或普通成员函数一样具有函数类型。如果是,那么我们如何找到该类型。就像我们可以decltype在普通函数上使用一样,是否允许decltype在构造函数上使用来查找它们的类型。
我正在学习 C++ 中的类,并且知道非静态成员函数具有隐式 this 参数。我的第一个问题是构造函数是否也有一个隐式的 this 参数,就像非静态成员函数一样。请注意,我并不是问我们是否可以this在 ctor 内部使用,因为我已经知道我们可以this在 ctor 内部使用。
接下来,我知道在const类的合格非静态成员函数内X, 的类型this是const X*。对于非静态成员函数(没有 const 限定), 的类型this是X*。同样,在 ctor 内部, 的类型this始终是X*。更深层次的问题来了。
我们知道,当我们调用一个非静态成员函数(例如obj.func())时,名为的对象的地址obj会隐式传递给方法的隐式 this 参数func。所以这解释了“this非静态成员函数的来源”。
现在,让我们将同样的事情应用于构造函数。例如,假设我们X使用默认 ctor 创建一个类的对象,如下所示:
X x; //does the default ctor also have an implicit this parameter to which the address of x is passed? …Run Code Online (Sandbox Code Playgroud)