2
初始化時使用默認構造函數(編譯器生成) 「靜態初始化」或「動態初始化」?靜態或動態初始化
我的意思是,在
class test{
int m;
public :
test(): m(12) {}
};
test i;
int main()
{//
}
這裏時i
得到初始化 - 在編譯時或者是動態初始化,即是可以安全使用於其他文件i
用於初始化或其他東西?
如果用戶定義了默認構造函數會怎麼樣?
問題的癥結在於:「當這些對象具有用戶定義的構造函數時,如何初始化全局/命名空間範圍對象?」。答案可以在標準的§3.6.2中找到。在這種情況下,'i.m'會被靜態初始化爲0,並被動態地初始化爲12,然而,如果默認構造函數被聲明爲'constexpr',那麼'i.m'會被靜態初始化爲12。 – Mankarse 2012-02-18 10:27:07