c++ - 在 C++ 中创建对象的拷贝

标签 c++ copy-constructor

我有一个类 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/

相关文章:

c++ - 类指针失去成员?

C++ 复制、移动构造函数

c++ - libtorrent-rasterbar7 : g++ linker unable to find libtorrent/session. hpp

c++ - glGenTextures 和 glGenSamplers 有什么区别?

c++ - 安全赋值和复制交换习语

c++ - clone() 方法是 'Good Idea' 吗?

c++ - 复制构造函数不被继承

c++ - 默认复制构造函数和默认赋值运算符

c++ - 使用管道链接 Hadoop MapReduce (C++)

c++ - 具有绝对梯度和分块梯度的 QSlider