Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;引用、地址、指针_C++_Object_Reference - Fatal编程技术网

C++ C++;引用、地址、指针

C++ C++;引用、地址、指针,c++,object,reference,C++,Object,Reference,我看到的函数定义如下所示 ClassName::Read(myObjectClass &temp) 我试着这样称呼它: myObjectClass *myObj; ClassName::Read(&myObj); 但这是不正确的。正确的称呼是什么?它的类型必须是myObjectClass&,如下所示: ClassName::Read(*myObj); 正如James正确指出的,正确的语法是*myObj。关键是&myObj为您提供了myObj的地址,其类型为myObjectC

我看到的函数定义如下所示

ClassName::Read(myObjectClass &temp)
我试着这样称呼它:

myObjectClass *myObj;
ClassName::Read(&myObj);
但这是不正确的。正确的称呼是什么?它的类型必须是
myObjectClass&
,如下所示:

ClassName::Read(*myObj);

正如James正确指出的,正确的语法是
*myObj
。关键是
&myObj
为您提供了
myObj
的地址,其类型为
myObjectClass**
。您希望取消对
myObj
的引用,以获取它所指向的
myObjectClass
实例,因此使用
*

顺便说一句,目前使用
*myObj
会导致未定义的行为,因为
myObj
本身尚未初始化。如果您不需要动态分配
myObjectClass
,您最好这样做:

myObjectClass myObj;
ClassName::Read(myObj);
如果动态分配是必须的,那么您可以这样做,例如

myObjectClass *myObj = new myObjectClass;
ClassName::Read(*myObj);
//...
delete myObj;
这边

myObjectClass myObj;
ClassName::Read(myObj);

您不必到处使用指针和动态分配。C++不是java。< /p>请注意,如果对象“MyObj'”不是在调用函数(例如新MyObjutC类)中创建的,那么读将写入一些未定义的地址。