这个只是一个标签类,任何派生与copyable的类都有值语义
:就是将对象作为一个值,可以拷贝复制。
注意的点:
构造函数和析构函数都是声明为protected
,防止直接构造copyable对象,只能通过继承的方式。下面这段代码会报错:
error: ‘constexpr muduo::copyable::copyable()’ is protected within this context
4 | muduo::copyable c;
error: ‘muduo::copyable::~copyable()’ is protected within this context
4 | muduo::copyable c;
#include "muduo/base/copyable.h"
int main() {
muduo::copyable c;
(void)c;
}
如果声明为private,继承这个类的派生类都无法实例化,因为派生类构造时会先调用父类的构造函数,private的构造函数无法由派生类调用