将指针传递到类方法

Passing pointer into Class method

本文关键字:类方法 指针      更新时间:2023-10-16

我正在学习C++,但指针有问题。 我想将指针传递到我的方法中并为其分配一个新值。但是调用该方法后我的指针是 0。我做错了什么?谢谢

#include <iostream>
using namespace std;
class MyObject
{
public:
bool search(int* a) 
{
int* test = new int(23);
a = test;
return true;
}
};

MyObject* obj;
void search()
{
int* test = NULL;
obj->search(test);
cout << test << endl;
}
int main(int argc, char *argv[])
{
obj = new MyObject();
search();
}

您需要通过引用传递指针。

bool search(int*& a)

如果没有这个,指针是按值传递的,你只分配你传递的内容的副本。要分配您传递的实际对象/变量,您需要通过引用传递指针。

进一步阅读:按引用传递与按值传递有什么区别?

a

是一个局部变量,如果在search方法执行期间设置它的值,它不会对自由search函数中的test变量产生任何影响,因为a只是test的副本。

您应该通过引用传递a

bool search(int *&a) { 
int* test = new int(23);
a = test; 
return true; 
}

指针是通过值而不是引用传递的。这意味着局部变量test的值没有改变。

而是做bool search(int*& a)

这会将引用传递给方法,该方法将更新调用函数中的局部变量。