在哪里可以找到一篇关于C++类型转换的非常容易理解的文章,涵盖了所有类型(促销,隐式/显式等)?
我已经学习了一段时间的C++,例如,虚拟函数机制对我来说比这个主题更清晰.我的观点是,这是因为教科书的作者太复杂了(参见Stroustroup的书等等).
在他的"用C++思考"(第10章)中,Eckel描述了Jerry Schwarz为解决惨败而开创的技术.他说如果我们想要将x初始化为100和y到200并在所有翻译单元之间共享它们,我们创建一个如下所示的Initializer.h:
extern int x;
extern int y;
class Initializer {
static int initCount;
// if (initCount++ == 0) x = 100 & y = 200
/* ... */
};
static Initializer init;
Run Code Online (Sandbox Code Playgroud)
在实现文件中我们有
#include "Initializer.h"
int x;
int y;
int Initializer::initCount;
Run Code Online (Sandbox Code Playgroud)
和Eckel说"静态初始化(在实现文件中)将强制所有这些值为零".
让我考虑以下情况:编译器在包含该头的其他文件之后处理实现文件(这意味着x和y已经在该另一个文件中设置为100和200).编译器看到了int x,它会做什么?它会将x和y设置为零,从而消除初始化和以前文件中的所有可能更改吗?但如果确实如此,那么initCount也将设置为零,打破整个技术.