在這本書中「C++語言」,作者聲稱對象初始化
有時候,當你設計一個圖書館,這是必要的,或者乾脆方便,去創造一種有一個構造函數和析構函數只有初始化和清理的目的。這種類型只能使用一次:分配一個靜態對象,以便調用構造函數和析構函數。
我很感興趣這種說法是指哪種場景?或者這個聲明如何幫助軟件設計?
書中還舉了一個例子
class Zlib_init{
Zlib_init();
~Zlib_init();
};
class Zlib{
static Zlib_init x;
}
和書指出
不幸的是,它不能保證,這樣的對象是其第一次使用前初始化,並在最後一次使用後銷燬在由單獨編譯的單元組成的程序中。
爲什麼會發生這種情況?
感謝您的澄清。
你有保證這樣的一個對象將被創建之前main被調用並在主返回後被銷燬。因此,你可能會試圖說:「但是......一切都很好」。不幸的是,你可能在你的程序的某個地方有一個不同的靜態對象,它也使用Zlib_init對象,並且C++語言不能保證它是否會在這個對象或其他對象之前或之後被創建或銷燬,只要它們在不同的編譯單元。所以,措辭可能有些迂腐,但它是100%正確的。 (好吧,無論如何它是正確的,因爲它是Stroustrup)。 – Damon 2011-03-16 16:39:48