今天我向你提出几个问题,但首先让我先简单介绍一下。
在我的作品中,我遇到了包含许多成员的结构。这些结构是可分配和可复制的。通过ctros的初始化列表初始化它是不舒服的。最近我有了这个想法,通过分配该类的全局对象来初始化这些成员,而不是通过初始化列表来完成它。我知道全局对象是由零自动初始化的 我假设非POD结构的全局对象与其成员一起清除 - 请纠正我,如果我错了,请。
我已经编写了示例代码来说明这种情况
#include <iostream>
struct Foo
{
double x;
void example() { }
};
struct Bar;
Bar const& Init();
struct Bar
{
int i;
double d;
Foo f;
Bar()
{
if( this != &Init() ) // is it necessary?
*this = Init();
}
};
const Bar GLOBAL_BAR;
Bar const& Init()
{
return GLOBAL_BAR;
}
void print_bar( const Bar& bar )
{
std::cout << bar.i << ' ' << bar.d << ' ' << bar.f.x << "\r\n";
}
int main()
{
std::cout << "Global object: ";
print_bar( GLOBAL_BAR );
std::cout << "Local object: ";
Bar bar;
print_bar( bar );
std::cout << "Temp objecy: ";
print_bar( Bar() );
return 0;
}
我的问题是:
答案 0 :(得分:1)