在c ++中创建对象的副本

kau*_*hik 2 c++ copy-constructor

我有一个SimpleCircle类.其声明如下:

class SimpleCircle
{
  public:
SimpleCircle();
SimpleCircle(int rad);
SimpleCircle(const SimpleCircle&);
~SimpleCircle();

   SimpleCircle operator++(int);
}
Run Code Online (Sandbox Code Playgroud)

在我使用的定义上:

SimpleCircle SimpleCircle::operator++(int)
{
    SimpleCircle temp(*this);
    ++itsRadius;
    return temp;
}
Run Code Online (Sandbox Code Playgroud)

当我使用时

SimpleCircle temp(*this)

,是被调用的复制构造函数还是什么?那里发生了什么?我没有像这样的构造函数

SimpleCircle(SimpleCircle newCircle)

或者其他东西(复制构造函数除外)

Jar*_*Par 8

这确实称为复制构造函数.虽然您没有SimpleCircle(SimpleCircle other)定义构造函数,但您确实已SimpleCircle(const SimpleCircle&)定义.表达式*this可以很容易地映射到该构造函数,因此它就是在这里执行的.