>>306
[誤送信してしまった。スマソ]
4. つまり、CPerson::CPerson( AAA const &rAAA ) や CPerson::CPerson( int &rX )
のような場合に explicit 指定することが推奨されていたと思う。
T x = T(a);
の場合、「C++のからくり」のような昔の解説書だと、最適化に任されているのではなく、
特別処理されているようなニュアンス(?)で、T x(a) と同じだと書いてあった。
もし、特別処理されてないと考えた場合、= の部分だけに着目すれば、T::T( T const &rX ) という
コピーコンストラクタの呼び出しと意味論的には考えて考えられなくも無い。
そうするとそこは「変換コンストラクタ」ではなく「コピーコンストラクタ」が使われることになる。
コピーコンストラクタはいくら使っても速度が遅くなる以外は劣化やデータの変化が無いため
無害と言えば無害。なので、explicit が付いていてもいなくても余り関係が無いような気がする。
C++相談室 part163
■ このスレッドは過去ログ倉庫に格納されています
307デフォルトの名無しさん (オイコラミネオ MM63-ZqoR)
2023/01/30(月) 16:18:21.06ID:S2+yDPxmM■ このスレッドは過去ログ倉庫に格納されています