C++ (与此一致):如果它适合于寄存器,则按值传递。否则请参考。@Sodacader:我不知道你所说的双打问题是什么意思。链接答案中的建议很好,我只想提到,不仅内置类型,而且用户定义的大小相等的类型:struct X{int X;}将具有与int相同的行为。此外

C++ (与此一致):如果它适合于寄存器,则按值传递。否则请参考。@Sodacader:我不知道你所说的双打问题是什么意思。链接答案中的建议很好,我只想提到,不仅内置类型,而且用户定义的大小相等的类型:struct X{int X;}将具有与int相同的行为。此外,c++,performance,function,constants,pass-by-reference,C++,Performance,Function,Constants,Pass By Reference,(与此一致):如果它适合于寄存器,则按值传递。否则请参考。@Sodacader:我不知道你所说的双打问题是什么意思。链接答案中的建议很好,我只想提到,不仅内置类型,而且用户定义的大小相等的类型:struct X{int X;}将具有与int相同的行为。此外,如果函数将进行复制,那么最好在接口中提前复制(按值传递),因为这允许编译器优化临时变量。你可能想读书。 void foo1(SomeType& st) { ... } void foo2(const SomeType&


(与此一致):如果它适合于寄存器,则按值传递。否则请参考。@Sodacader:我不知道你所说的双打问题是什么意思。链接答案中的建议很好,我只想提到,不仅内置类型,而且用户定义的大小相等的类型:
struct X{int X;}将具有与
int
相同的行为。此外,如果函数将进行复制,那么最好在接口中提前复制(按值传递),因为这允许编译器优化临时变量。你可能想读书。
void foo1(SomeType& st)
{
   ...
}

void foo2(const SomeType& st)
{
   ...
}

void foo3(SomeType st)
{
   ...
}

void foo4(SomeType* st)
{
   ...
}