これは私に考えさせました:
class X;
void foo(X* p)
{
delete p;
}
デストラクタが表示されdelete p
ているかどうかさえわからない場合、どうすればよいでしょうか。X
g++ 4.5.1 では、次の 3 つの警告が表示されます。
warning: possible problem detected in invocation of delete operator: warning: 'p' has incomplete type warning: forward declaration of 'struct X'
そして、それは言います:
注:クラスの定義時に宣言されていても、デストラクタもクラス固有の演算子 delete も呼び出されません。
うわー... g ++のように、この状況を診断するためにコンパイラが必要ですか? それとも未定義の動作ですか?