#include <iostream.h>
class a {
public:
~a() { cout << 1; }
};
int main()
{
a ob;
ob.~a();
return 0;
}
何が悪いのかよりも間違っているのなら?
Turbo C ++で実行しているこのコードを試しましたが、それでも次のエラーが発生します
"
ob.~a();
"行にメンバーIDが必要です
それ以外の場合、出力を推測しますか?
通常、デストラクタ関数を明示的に呼び出すことはありません。インスタンスがスコープ外になると、暗黙的に呼び出されます。
同じインスタンスに対してデストラクタ関数を2回呼び出すと、未定義の動作が発生します。
ただし、最新のコンパイラでは、コンパイラエラーは発生しません。参照してくださいここにしてください。それは、Turbo C ++設計者がエラーメッセージにそのようなものを残したという珍しい良い決定の1つだったのかもしれません。
プレースメントnewで作成されたインスタンスのプールを維持している場合など、デストラクタ関数を明示的に呼び出すことはまれです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加