鑑於下面的代碼,爲什麼我會得到關於A的析構函數是私人的錯誤?顯然它是私有的,但我不明白爲什麼以這種方式初始化B的A對象實例會導致A的析構函數被調用。對象初始化期間的析構函數調用?
任何錯別字的道歉,我正在從非聯網系統的內存中重新創建代碼,並沒有編譯器。
class A
{
public:
A(int val) : x(val) {}
private:
int x;
~A() {}
};
class B
{
public:
B() : aInstance() {}
private:
A aInstance;
};
int main()
{
B b;
}
無法爲基於堆棧的對象(甚至是間接)執行此操作。有關私有析構函數的用法和限制的一個很好的討論在這裏:http://stackoverflow.com/questions/631783/what-is-the-use-具有析構函數作爲私有 – holtavolt 2012-01-11 18:11:41