一个简单的class T
class T
{
public:
T()
{
value = 0x12345678;
}
~T()
{
value = 0;
}
int value;
};
加上一个简单的foo函数,里面定义了一个静态局部对象:
void foo()
{
static T t;
}
编译器展开后,实际上等同我们定义了
char tMemory[sizeof(T)];
int tInit = 0;
void tFree()
{
((T*)tMemory)->~T();
}
void foo()
{
if(!tInit)
{
tInit = 1;
new (tMemory) T();
atexit(tFree);
}
}
博客展示了C++中一个简单的class T的定义,包含构造和析构函数。还给出了一个含静态局部对象的foo函数,并且说明了编译器展开后,其实际等同于定义了特定的内存空间、初始化变量及相关函数,体现了编译器对代码的处理机制。
267

被折叠的 条评论
为什么被折叠?



