通知
すべてクリア
04/01/2021 1:16 am
スマートポインタのコードで1点、質問となります。
対象:プロジェクト:SmartPointer、ファイル名:TableUtility.cppのsetupTable関数
レクチャー資料の通りですが、以下画像を載せています関数の内容としては、スマートポインタで参照している先の値を変更する操作となっていますが、
引数の先頭にconstが指定した状態でも、エラーにならないのはなぜなのでしょうか。
(通常のポインタでは、同様の設定をした場合はエラーになりますが)
04/01/2021 1:17 am
constは後ろの変数を変更禁止にします。
const std::unique_ptr<int[]>& table
の場合は後ろのstd::unique_ptrが変更禁止になりますのでポインターが指す値の変更は可能です。
ポインターのconst化はポインターの移動、ポインターの参照先の変更などが禁止になります。
const std::unique_ptr<int[]>& table
で参照する値を変更禁止にしたい場合は
const std::unique_ptr<const int[]>& tableこのようにint[]の前にconstを付けてください。
04/01/2021 1:17 am
ご回答ありがとうございます。
理解できました。(constは「<int[]>」までが対象と思っていました)