我有以下靜態變量
main()
{
// first instance of D
base *d1 = new D();
d1->f();
....
// 2nd instance of D
base *d2 = new D();
d2->f();
}
我發現我第一次實例d和呼叫D1 - > f()將靜態變量設置爲false。但第二次我調用d2-> f()代碼甚至沒有命中「static bool indicator = false;」並且它保持爲真(從d1-f()的第一遍),這正是我想要的行爲,但我不明白爲什麼會發生這種情況。有人可以請解釋發生了什麼。在此先感謝
通過設計,初始值設定項對函數中的靜態變量只運行一次。如果你不想要這種行爲,那麼你只需將該變量聲明爲非靜態的。重點是通過多次調用該函數來維護該值。 – Lou 2013-02-23 03:21:41