C++引用,地址,指针

Cod*_*Guy 2 c++ reference object

我看到一个看起来像这样的函数定义

ClassName::Read(myObjectClass &temp)
Run Code Online (Sandbox Code Playgroud)

我试着像这样称呼它:

myObjectClass *myObj;
ClassName::Read(&myObj);
Run Code Online (Sandbox Code Playgroud)

但这是不正确的.什么是正确的方式来称呼它?它需要是类型myObjectClass&

Jam*_*lin 9

像这样:

ClassName::Read(*myObj);
Run Code Online (Sandbox Code Playgroud)


Stu*_*etz 5

正如詹姆斯正确指出的那样,正确的语法是*myObj.关键是&myObj给你的地址myObj,有一个类型myObjectClass**.你想要取消引用 myObj来获取myObjectClass它指向的实例,因此你使用*.

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

myObjectClass myObj;
ClassName::Read(myObj);
Run Code Online (Sandbox Code Playgroud)

如果动态分配是必须的,那么你可以做例如

myObjectClass *myObj = new myObjectClass;
ClassName::Read(*myObj);
//...
delete myObj;
Run Code Online (Sandbox Code Playgroud)