查看Boost版本: grep BOOST_LIB_VERSION /usr/include/boost/version.hpp
或者 dpkg -s libboost-dev | grep 'Version'
Boost中有一个noncopyable类,它把copy构造函数和赋值运算符都声明为private,可以让自定义的类继承它
1 | class noncopyable |
上面拷贝构造函数和赋值构造函数都声明为private,这样不论什么派生方式,子类对此都是无权访问的,从而达到禁止拷贝的目的。
构造函数为什么声明成protected呢? 首先肯定不能为private,不然无法构造子类实例。
如果为public,那么外部是可以创建noncopyable这么一个实例的,可是这个实例是完全没有意义的,我们用不到,该类只有在被继承之后才有意义。
所以此处声明为protected才是合适的,既保证外部无法直接构造一个无意义的noncopyable实例,又不影响构造子类实例。
但是如果派生类继承它之后,又定义自己的copy构造和赋值运算符,调用者还是能够通过赋值和copy构造等手段来产生一个新的对象,这种情况干脆不要继承noncopyable类