[問題] C++建構與解構問題
開發平台(Platform): ( GCC, Linux, ...)
以下程式碼:
class A
{
public:
A( int i ):v( i ) { cout << "A::A(" << i << ") called" << endl; }
~A(){ cout << "A::~A(" << v << ") called" << endl; }
operator bool() { return v != 0; }
private:
int v;
};
int main()
{
int i = 1;
while( A a = i )
{
i = 0;
cout << "avocado" << endl;
}
cout << "vineyard" << endl;
return 0;
}
輸出結果:
A::A(1) called
avocado
A::~A(1) called
A::A(0) called
A::~A(0) called
vineyard
預期結果:
A::A(1) called
A::A(0) called
A::~A(0) called
avocado
A::~A(1) called
vineyard
我想問一下為什麼??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.173.162.150
推
07/30 23:56, , 1F
07/30 23:56, 1F
→
07/31 00:00, , 2F
07/31 00:00, 2F
→
07/31 00:00, , 3F
07/31 00:00, 3F
→
07/31 00:00, , 4F
07/31 00:00, 4F
→
07/31 00:02, , 5F
07/31 00:02, 5F
→
07/31 00:15, , 6F
07/31 00:15, 6F
→
07/31 03:48, , 7F
07/31 03:48, 7F
→
07/31 03:48, , 8F
07/31 03:48, 8F
→
07/31 03:49, , 9F
07/31 03:49, 9F
推
07/31 08:52, , 10F
07/31 08:52, 10F
→
07/31 11:26, , 11F
07/31 11:26, 11F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章