【发布时间】:2020-11-12 17:11:48
【问题描述】:
我一直在阅读 Bruce Eckel 的“Thinking in C++”,并且遇到了复制构造函数。虽然我主要了解对复制构造函数的需求,但我对以下代码有点困惑:
#include <iostream>
using namespace std;
class foo
{
static int objCount;
public:
foo()
{
objCount++;
cout<<"constructor :"<<foo::objCount<<endl;
}
~foo()
{
objCount--;
cout<<"destructor :"<<foo::objCount<<endl;
}
};
int foo::objCount=0;
int main()
{
foo x;
foo y = x;
return 0;
}
在上面的代码中,构造函数被调用一次,析构函数被调用两次。 以下是我不明白的:
-
y是class foo的对象,那为什么编译器不调用构造函数,然后将x的内容复制到y中呢? -
编译器提供的默认复制构造函数在这张图中的位置在哪里?
【问题讨论】:
标签: c++ copy-constructor