我有一个类 SimpleCircle。其声明如下:
class SimpleCircle
{
public:
SimpleCircle();
SimpleCircle(int rad);
SimpleCircle(const SimpleCircle&);
~SimpleCircle();
SimpleCircle operator++(int);
}
关于我使用的定义:
SimpleCircle SimpleCircle::operator++(int)
{
SimpleCircle temp(*this);
++itsRadius;
return temp;
}
当我使用
SimpleCircle temp(*this)
,复制构造函数被调用还是什么?那里发生了什么?我没有像
这样的构造函数SimpleCircle(SimpleCircle newCircle)
或其他东西(复制构造函数除外)
最佳答案
这确实调用了复制构造函数。虽然您没有定义 SimpleCircle(SimpleCircle other)
构造函数,但您确实定义了 SimpleCircle(const SimpleCircle&)
。表达式 *this
可以很容易地映射到该构造函数,因此它就是在这里执行的。
关于c++ - 在 C++ 中创建对象的拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10076714/