次の関数定義の引数の2つの定数は何を意味しますか?
void myFunction (MyClass* const* const myObj);
右から左に読んでください:
MyClass* const* const
^ ^ ^ ^ ^
| | | | 1
| | | |
| | | 2
| | 3
| 4
5
(1) const (2) へのポインタ(3) const (4) へのポインタMyClass。つまり、ポインタを変更することはできませんが、MyClassインスタンスは変更可能です。
引数は、オブジェクトへのポインタへのポインタです。
1つ目constは、間接ポインタ(としてアクセスされるポインタ*myObj)を変更できないことを意味します。
2つ目は、値によって渡されるconstため、何も役に立たないことをmyObj意味し、引数の関数のローカルコピーを。にすることは無意味constです。