したがって、実際に書き込みを行うクラスへのポインターを所有する出力ストリーム クラスがあり、特定の値をユーザーに透過的にバインドできるように、関数から初期化されたインスタンスを返すことができるコピー コンストラクターが必要です。合理的なコピー セマンティクスを実現するために、コピーされたオブジェクトのライター ポインターをクリアし、それを閉じてコピー中に使用できないようにしたいと考えています。
非 const コピー コンストラクター a-la を使用すると、問題なく実行できます。
class Test {
public:
Test(Test& other);
};
しかし、関数呼び出しによって返された一時から直接割り当てることができるようにしたい:
Test test = make_test();
コピー コンストラクターは const である必要があります。したがって、コピー コンストラクターで const_cast を使用することの意味に興味があります。他の参照を非 const ポインターにキャストし、言及したライター ポインターをクリアします。const_cast は一般的に悪と見なされていることは知っていますが、この場合は機能しますか? 関数呼び出しから返された一時オブジェクトとどのように相互作用するのか、特に興味があります。
あるいは、コピー コンストラクターにアクセスしたい作成関数は 4 つしかありません。それらの関数 (戻り値を含む) のみが使用できるようにスコープを設定する合理的な方法があれば、それを好むでしょう。