gpt4 book ai didi

C++ : Aliases in function argument

转载 作者:太空宇宙 更新时间:2023-11-04 15:47:19 27 4
gpt4 key购买 nike

我对在函数参数中使用别名有疑问。这是我的问题。

让我们考虑一下这个函数定义

void thisIsSparta(int& number){
...
}

在调用时,它与以下代码配合得很好:

int king = 1;
thisIsSparta(king);

但是当我尝试这个时我有一个不匹配的错误:

thisIsSparta(1);

我可以很容易地猜到错误的发生是因为根本没有变量可以别名,因此错误。但是,我不希望程序员担心只使用这两种方法中的一种,这第二个函数调用应该可以正常工作!

除了第一个函数之外,我看到的唯一解决方案是创建另一个没有别名参数的函数:

void thisIsSparta(int number){

}

但这会导致可怕的代码重复,我不是很喜欢这个。

此外,当我使用变量时,程序可以决定使用第二个定义而不是前一个定义。然后我失去了对别名的兴趣,其目的是避免变量复制。

有人能解决我的问题吗?事实上,这是一个简化的例子,实际上我在这个函数的参数中有一个泛型类型,它可以任意大。这就是为什么我想使用别名来避免复制。

最佳答案

对于基本类型,按值传递即可。它比传递引用更快,所以放弃引用传递,只需要

void thisIsSparta(int number)

对于大型类型,您只能将临时对象绑定(bind)到const 引用,因此您可以将方法声明为

void thisIsSortOfSparta(const MyClass& obj)

如果您在函数内部修改值,那么传递临时参数没有意义,因此编译器会提示是正确的,但如果您不这样做,请使用上述两个选项。

关于C++ : Aliases in function argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14524199/

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