C++ 理解CRTP示例中的复制构造函数

C++ 理解CRTP示例中的复制构造函数,c++,copy-constructor,C++,Copy Constructor,我试图理解CRTP的一个简单用例。下面是一个例子 模板 结构计数器 { 创建静态int对象; 静态int对象_活动; 计数器() { ++创建的对象; ++有生命的物体; } 计数器(常数计数器&) { ++创建的对象; ++有生命的物体; } 受保护的: ~counter()//不应通过此类型的指针删除对象 { --有生命的物体; } }; 模板int计数器::创建的对象(0); 模板int计数器::对象_活动(0); 第十类:柜台 { // ... }; 我不懂复制控制程序。他们为什么在它

我试图理解CRTP的一个简单用例。下面是一个例子

模板
结构计数器
{
创建静态int对象;
静态int对象_活动;
计数器()
{
++创建的对象;
++有生命的物体;
}
计数器(常数计数器&)
{
++创建的对象;
++有生命的物体;
}
受保护的:
~counter()//不应通过此类型的指针删除对象
{
--有生命的物体;
}
};
模板int计数器::创建的对象(0);
模板int计数器::对象_活动(0);
第十类:柜台
{
// ...
};
我不懂复制控制程序。他们为什么在它里面做递增呢?此外,我删除了它,示例也运行良好。他们为什么要申报

我不懂复制控制程序。他们为什么在它里面做递增呢

通过调用复制构造函数构造的对象应算作构造的对象

您的示例之所以有效,是因为它不使用复制构造函数

使用:

看看有什么不同

我不懂复制控制程序。他们为什么在它里面做递增呢

通过调用复制构造函数构造的对象应算作构造的对象

您的示例之所以有效,是因为它不使用复制构造函数

使用:


查看差异。

否则,默认情况下将生成复制构造函数,但不会对创建的对象计数,如

X x1;
X x2(x1);

是的,demo没有它也可以工作,但不会以正确的方式对对象进行计数。

否则,默认情况下会生成复制构造函数,但不会对创建的对象进行计数,如

X x1;
X x2(x1);
是的,演示没有它也可以工作,但不能以正确的方式计算对象

X x1;
X x2(x1);