我想问一下在函数之间或对象之间传递指针或返回它们..我听说一般来说传递或返回指针(无论它们指向数组还是对象或它们指向的任何东西)都是不安全的,并且输出不能保证。
你从哪里得到那个的?一般来说,这不是真的,当然你可以传递指针。
棘手的事情是管理(堆分配的)对象的所有权,因为您必须在某个地方再次释放内存。换句话说:当你用 分配内存时new
,你将不得不用 再次释放它delete
。
例子:
A* function1(A* a) {
return a;
}
B* function2(B* b) {
return new B(b);
}
function1
返回一个现有的指针。谁拥有传入的A
对象也将拥有返回的对象,因为它是相同的。这需要记录在案,因为这些知识对于使用function1
!
function2
B
通过处理其输入参数来创建一个新的类对象。调用function2
者将拥有返回的对象,并在delete
完成后对其负责。同样,这需要记录在案!
另外,我在教程中读到 c++ 中的所有内容都是按值传递的?传递指针不是称为按引用传递吗?
从技术上讲,传递指针是按值传递的,因为指针本身会被复制。但是由于指针是“引用类型”,因此您基本上可以通过引用传递。
请注意,C++ 也知道引用 ( int&
),这实际上是按引用传递。