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类)中创建的,那么读将写入一些未定义的地址。