オブジェクトがスタック上で破棄されるとどうなるかを理解しようとしています。ここに私のサンプルコードがあります:
#include <stdio.h>
struct B {
~B() {puts("BBBB");}
};
int main()
{
B b;
b.~B();
}
出力は
BBBB
BBBB
出力に基づいて、オブジェクトが 2 回破棄されていることがわかります。1 つは ~B() で、もう 1 つは "}" の後です。オブジェクトが2回破壊されるのはなぜですか?
更新:返信を確認した後、デストラクタはこのオブジェクトを破棄しないと思います。スコープ「}」の外に到達する前にオブジェクトを破棄する方法があります。ありがとう