這與a question posted yesterday有關。延長對象生命週期的C++ const引用成員
class A
{
public:
mutable int x;
A()
{
static int i = 0;
x = i;
i++;
std::cout << " A()" << std::endl;
}
~A()
{
std::cout << "~A()" << std::endl;
}
void foo() const
{
x = 1;
};
};
class B
{
public:
const A & a;
B(const A & a) : a(a)
{
std::cout << " B()" << std::endl;
}
~B()
{
std::cout << "~B()" << std::endl;
}
void doSomething()
{
a.foo();
};
};
int main()
{
B b((A()));
b.doSomething();
}
現在,在調用doSomething之前調用析構函數。然而,雖然函數基本上改變了A的一個成員,但是這個調用起作用。它不是同一個實例。沒有其他A被創建。我使用A的構造函數中的靜態來跟蹤它。誰能解釋一下?
Luchian的空間不能與那些...重用:我添加了鏈接到昨天的問題。希望你指的是我的問題。 – Nawaz
是的,正好:) –