首页 > 试题广场 >

请你回答一下C++中拷贝赋值函数的形参能否进行值传递?

[问答题]

请你回答一下C++中拷贝赋值函数的形参能否进行值传递?

拷贝赋值如果为值传递,仅仅是多了一次拷贝,并不会无限递归
拷贝构造如果为值传递,才会引起无限递归

发表于 2020-07-28 10:02:39 回复(0)
拷贝赋值的参数可以是值传递
在C++ primer 第五版13.3节介绍了 copy and swap技术就是利用值传递和swap函数实现异常安全的拷贝赋值。以下是书中代码:
HasPtr& HasPtr::operator=(HasPtr rhs)
{
    swap(*this,rhs);
    return *this;
}
在拷贝赋值中只需要调用拷贝构造函数,并不会产生无限的循环往复。

发表于 2020-08-02 11:05:57 回复(0)
不能。如果是这种情况下,调用拷贝构造函数的时候,首先要将实参传递给形参,这个传递的时候又要调用拷贝构造函数。。如此循环,无法完成拷贝,栈也会满。
发表于 2019-08-11 14:17:45 回复(0)
值传递本身就是拷贝赋值。还没拷贝赋值函数呢 ,你就在拷贝赋值一直往复
发表于 2020-05-21 13:56:47 回复(0)