gpt4 book ai didi

c++ - 对象指针的副作用

转载 作者:搜寻专家 更新时间:2023-10-31 01:49:14 24 4
gpt4 key购买 nike

我可以在这段代码中找到问题所在:

我想在一个函数中重置一个指针,我通过返回指针实现了它的工作,但是我不能让它有副作用(通过指针传递)。

void function(Object * obj)[{
obj = new Object();
cout << obj << endl;
//return obj;
}

main(){
Object * obj = 0;
function(obj);
cout << obj << endl;
}

在这种情况下,结果是:

0x12345678
0

本来应该是

0x12345678
0x12345678

我尝试使用指针的指针或引用的指针,但仍然无法通过该函数。虽然只是返回值就像一个魅力。但是我需要对几个参数执行此操作,并且代码比此处显示的要复杂得多。

最佳答案

如果您像这样更改函数声明,它应该可以工作:

void function(Object  * &obj)

在您的原始代码中,您按值传递指针,这意味着该函数复制了指针,并且不会反射(reflect)函数中对指针的任何更改。当您通过引用传递时,您实际上是在处理原始数据,这可能会在幕后使用指针完成。

关于c++ - 对象指针的副作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16819202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com