gpt4 book ai didi

c++ - 在 C++ 的方法中使用引用并返回值?

转载 作者:行者123 更新时间:2023-11-28 03:27:50 24 4
gpt4 key购买 nike

假设您正在用 C++ 实现一个列表数据类型。您的这个列表会将项目保存在一个简单的数组中,并将包含类型的实例:“动物”。

例如,addItem 方法将是这样的:

void MyAnimalList::insertAnimal(Animal a){
animalArray[currentPosition] = a;
currentPosition++;
}

所以我们在我们的 List 实现中只有一个 currentPosition,当我们向它添加一个新的 Animal 时,Animal a 现在在 animalArray 中的“currentPosition”中被引用,然后 currentPosition 增加。

我的问题是关于 retrieveItem。这两个之间有什么区别吗:

void MyAnimalList::getTheLastAddedAnimal(Animal &a){
a = animalArray[currentPosition-1];
}

Animal MyAnimalList::getTheLastAddedAnimal(){
return animalArray[currentPosition-1];
}

显然,第二种方法将被调用为:

Animal lastAddedAnimal = myAnimalList.getTheLastAddedAnimal();

第一个应该这样称呼:

Animal someAnimal;
myAnimalList.getTheLastAddedAnimal(someAnimal);

最佳答案

区别在于语义。如果一个方法被称为 getXXXXX,您希望它返回那个东西。

大多数体面的编译器都实现了 NRVO,因此效率在这里并不是真正的问题。我会选择第二个版本。

不过,我会将 insertAnimal(Animal a) 的定义更改为 insertAnimal(const Animal& a)

关于c++ - 在 C++ 的方法中使用引用并返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13445159/

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