C++ 11 N3485 5.3.5.1それは言う:[delete
の】C++ 11クラスの種類を削除しますか?で
オペランドがタイプまたはクラスタイプをオブジェクトへのポインタでなければなりません。クラス型の場合、オペランドはオブジェクト型へのポインタにコンテキスト変換されます。
このような使用法の例(オペランドはクラスタイプ)は何ですか?
C++ 11 N3485 5.3.5.1それは言う:[delete
の】C++ 11クラスの種類を削除しますか?で
オペランドがタイプまたはクラスタイプをオブジェクトへのポインタでなければなりません。クラス型の場合、オペランドはオブジェクト型へのポインタにコンテキスト変換されます。
このような使用法の例(オペランドはクラスタイプ)は何ですか?
クラス型の場合、オペランドは暗黙的にオブジェクト型へのポインタ に変換されます。
したがって、オブジェクトにはdelete
を使用できますが、この型に暗黙の変換演算子がポインタの場合にのみ使用できます。
class A
{
public:
class Inner {};
A()
{
inner = new Inner();
}
operator Inner*() { return inner; }
private:
Inner* inner;
};
int main()
{
A* a = new A();
delete *a;
delete a;
}
しかし、それはC++ 03標準があり、ほぼ同じ言葉で、C++ 11の新機能ではありません
オペランドは、ポインタ タイプ、または単一を持つクラス型を持たなければなりません変換関数(12.3.2)をポインタ型に変換します。
有用かどうかを示す例や例はありますか? – zch
いずれも行いますが、便利です。 –
誰もが知っている、なぜn3376とn3485の間で言葉遣いが変わったのですか?関連する情報が見つかりません... – ForEveR