C++类声明中**的含义解析:成员函数参数ThisClass**的疑问
关于C++中
ThisClass**的含义解读 嘿,我来给你掰扯清楚这个事儿——ThisClass** identifier就是双重指针(指针的指针),没有什么特殊的语法糖或者隐藏含义,和你熟悉的int**本质是一个逻辑,只是把基础类型换成了你的类类型而已。
先从你已经懂的单指针说起:
ThisClass* identifier:这个参数是一个指向ThisClass实例的指针,你可以通过它访问那个实例的成员,但如果在函数里直接给identifier赋值(比如identifier = new ThisClass();),只会修改函数内部这个参数的副本,外部的指针变量不会有变化——因为C++函数参数默认是值传递。
那双重指针解决的就是这个问题:
ThisClass** identifier:这个参数是一个指向「ThisClass指针」的指针。简单说,它保存的是你外部那个ThisClass*变量的地址。这样一来,在函数内部通过*identifier就能直接操作外部的指针变量本身了。
举个实际的例子,比如这个成员函数可能是用来创建并返回一个新的ThisClass实例:
void ThisClass::MemberFunction(ThisClass** identifier) { // 释放旧对象(如果有的话) if (*identifier != nullptr) { delete *identifier; } // 让外部的指针指向新创建的对象 *identifier = new ThisClass(); } // 调用的时候 ThisClass* myObj = nullptr; myObj->MemberFunction(&myObj); // 传入myObj的地址,也就是ThisClass**类型
再总结一下你代码里这个成员函数的参数:
它允许函数修改调用者传入的ThisClass*指针本身——不管是让它指向新对象、重置为nullptr,还是用来输出某个内部创建的对象的地址,都是双重指针的典型用法。
内容的提问来源于stack exchange,提问作者XavierStuvw
相关产品推荐
相关产品推荐

