gpt4 book ai didi

c++ - 在 C++ 中选择返回类型

转载 作者:行者123 更新时间:2023-11-28 07:01:52 25 4
gpt4 key购买 nike

在 C 中,我认为没有引用,所以返回值可能是一个指针或数据类型本身。如果它是一个局部变量,返回一个指针没有任何意义。如果变量是动态分配的,则只能返回指针。

不过,在C++中,多了一个新的选择,reference。如果我要返回的是一个局部变量,我想我只能选择返回它自己,因为其他两个在函数返回后就没有什么可引用和指向的了。如果我动态分配一个变量,我会返回什么?指针还是引用?有什么好处和坏处?为什么不直接返回变量?

一个非常简单的例子:

class TreeNode
{
//......May be some elements and functions.
}

TreeNode& test()
{
TreeNode* temp = new TreeNode;
return *temp;
}

我不知道要返回什么,指针还是引用?

最佳答案

If I dynamically allocate a variable, what do I return?

返回一个指针(普通指针或智能指针,视情况而定)。不要返回对动态分配对象的引用:最终,您将需要释放该对象的内存;您必须使用的构造 delete &someRef 非常违反直觉。

当您从成员函数返回时返回引用是合适的,并且您返回的引用是针对成员的,或者当您返回对首先传递给您的函数的对象的引用时.

Why don't just return the variable?

这也是一个非常有效的选择:按值返回让您不必担心内存管理和对象所有权。最大的障碍是复制的成本。然而,它们的低效率往往被严重高估,导致过早优化。

关于c++ - 在 C++ 中选择返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22315764/

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