gpt4 book ai didi

c++ - 在此函数中使用引用参数有什么好处吗?

转载 作者:太空狗 更新时间:2023-10-29 23:22:41 24 4
gpt4 key购买 nike

我定义了以下类:

class Action
{
public:
Action(){ _bAllDone = false; }

void AddMove( Move & m );
private:
std::deque<Move> _todo;
bool _bAllDone;
};

成员AddMove定义如下:

void Action::AddMove( Move & m )
{
_todo.push_back( m );
}

我注意到,如果没有此函数的引用参数,复制构造函数会被调用两次,而如果有引用参数,它只会被调用一次。仅调用一次复制构造函数而不是调用两次是使用引用参数的充分理由吗?

最佳答案

STL 中的双端队列类应该维护您传递给其 push_back 方法的元素的拷贝。这就是一个复制构造函数的来源。

如果你去掉 addMove() 中的引用,你将首先得到参数的一个拷贝(因此对复制构造函数的一次调用),然后当你推回时,你将得到第二个拷贝。

复制构造函数的双重调用是浪费的,所以引用是可取的。但是,您应该将 addMove() 的参数声明为常量引用,以向调用者指示该元素不会被修改。在这样的保证下(假设您没有破坏它),通过引用传递对象是安全的,无需担心,也无需支付对象拷贝的代价。

关于c++ - 在此函数中使用引用参数有什么好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1522141/

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