【C++詳細】char**はconst char**に値を付与
937 ワード
いつもchar*をconst char*に付与しているので、当然ながらchar**をconst char**に付与できると思っていた結果が間違っていました.
次の例を示します.
//1のコードはchar**をconst char**に付与することであり、それが合法であると仮定すると、次の行ではpccというchar*を間接的にconst charに指向することができ、強制的な変換はありません.このとき//2のコードでconst charの内容を変更できます.
同じ理屈でconst int**などもあります.
error: cannot initialize a parameter of type 'const char **' with an rvalue of type 'char **'
次の例を示します.
int main() {
const char c = 'c';
char* pc;
const char** pcc = &pc; //1: not allowed
*pcc = &c;
*pc = 'C'; //2: modifies a const object
}
//1のコードはchar**をconst char**に付与することであり、それが合法であると仮定すると、次の行ではpccというchar*を間接的にconst charに指向することができ、強制的な変換はありません.このとき//2のコードでconst charの内容を変更できます.
同じ理屈でconst int**などもあります.