次の関数定義の引数の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
です。