C ++引用,地址,指针

时间:2012-04-10 00:49:01

标签: c++ object reference

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

ClassName::Read(myObjectClass &temp)

我试着这样称呼它:

myObjectClass *myObj;
ClassName::Read(&myObj);

但这是不正确的。什么是正确的方式来称呼它?它必须是myObjectClass&

类型

3 个答案:

答案 0 :(得分:9)

像这样:

ClassName::Read(*myObj);

答案 1 :(得分:5)

正如詹姆斯正确指出的那样,正确的语法是*myObj。关键是,&myObj为您提供myObj的地址,其类型为myObjectClass**。您希望取消引用 myObj来获取它指向的myObjectClass实例,因此您使用*

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

myObjectClass myObj;
ClassName::Read(myObj);

如果必须进行动态分配,那么你可以这样做。

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

答案 2 :(得分:0)

这样

myObjectClass myObj;
ClassName::Read(myObj);

您不必在任何地方使用指针和动态分配。 C ++不是Java。