码迷,mamicode.com
首页 > 其他好文 > 详细

boost库学习之 noncopyable

时间:2015-01-30 21:08:04      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:boost   noncopyable   

c++中定义一个类时,如果不明确定义拷贝构造函数和拷贝赋值操作符,编译器会为我们自动生成这两个函数如
class TestClass
{
public:
	TestClass(const TestClass&);
	TestClass& operator=(const TestClass&);
};


如何防止类的实例被拷贝呢?可以将拷贝构造函数和拷贝赋值操作符定义为private
class TestClass
{
private:
	TestClass(const TestClass&);
	TestClass& operator=(const TestClass&);
};


noncopyable同样为了实现不可拷贝提供帮助,只需要继承boost::noncopyable类即可。
需要包含<boost/noncopyable.hpp>头文件,引用boost命名空间
class TestClass : public boost::noncopyable
{

};


那么
TestClass tc1;
TestClass tc2(tc1);   //编译出错
对于private还是public继承,效果相同。


总结:
boost::noncopyable明确的表达了设计者的意图,更加友好,减少出错几率,但有时自动生成的拷贝构造函数和拷贝赋值函数是有用的,可以自持swap(),以及用于stl容器。

boost库学习之 noncopyable

标签:boost   noncopyable   

原文地址:http://blog.csdn.net/aspnet_lyc/article/details/43313171

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!