gpt4 book ai didi

c++ - c++对象间指针传递

转载 作者:行者123 更新时间:2023-11-28 00:39:22 24 4
gpt4 key购买 nike

我想问一下关于在函数之间或对象之间传递指针或返回它们的问题。我听说一般情况下传递或返回指针(无论它们指向数组还是对象或它们所指向的任何东西)都是不安全的并且无法保证输出。

现在我已经尝试过了,到目前为止一切似乎都很好,但我不希望我的项目意外地工作..所以有人可以向我解释为什么不传递或返回指针以及建议的解决方案是什么(对于例如,如果我想在另一个对象(function funcobject2))?

另外,我在教程中读到 C++ 中的所有内容都是按值传递的?传递指针不就是引用传递吗?

谢谢大家。

最佳答案

I want to ask about passing pointers between functions or between objects or returning them .. I heard that passing or returning pointers in general (whether they point to an array or an object or whatever they are pointing at) isn't safe and the output isn't guaranteed.

你从哪里得到的?一般来说,这不是真的,当然你可以传递指针。

棘手的事情是管理(堆分配的)对象的所有权,因为在某个地方您必须再次释放内存。换句话说:当您使用 new 分配内存时,您将不得不使用 delete 再次释放它。

例子:

A* function1(A* a) {
return a;
}

B* function2(B* b) {
return new B(b);
}

function1 返回一个现有指针。谁拥有传入的A对象也将拥有返回的对象,因为它们是一样的。这需要记录下来,因为这些知识对于使用 function1 是必不可少的!

function2 通过复制其输入参数创建类 B 的新对象。调用 function2 的人将拥有 返回的对象,并负责在完成时删除。同样,这需要记录在案!

also, I read in a tutorial that everything in c++ is pass by value? isn't passing pointers is called pass by reference?

从技术上讲,传递指针是按值传递,因为指针本身 被复制了。但是由于指针是一种“引用类型”,因此您基本上可以通过引用传递它。

请注意,C++ 也知道引用 (int&),这实际上是按引用传递。

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

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