[英]Alternative way to initialization members in C++03
今天,我有幾個問題要問您,但第一個問題讓我開始簡要介紹。
在我的工作中,我遇到了包含許多成員的結構。 這些結構是可分配和可復制的。 通過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;
}
我的問題是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.