Effective C++ 条款6
2015-06-21 09:58
567 查看
若不想使用编译器自动生成的函数,就该明确拒绝
本节知识点是如果不想让编译器自动生成copy函数和copy assignment函数。我们就可以通过以下两种方式实现
第一种:
将copy函数和copy assignment函数声明为private成员,并且不实现它们。这样只要调用此类函数编译器就无法通过编译。如果别的成员函数调用它们,则连接器无法通过连接。
如下代码:
class HomeForSale { public: …… private: HomeForSale(const HomeForSale&); HomeForSale& operator=(const HomeForSale&); };
第二种:
可以定义一个基类,通过声明基类的copy函数和copy assignment函数声明为private成员,这样derived class在调用copy函数和copy assignment函数的时候,就无法通过编译。
如下代码:
class Uncopyable{ { protected: Uncopyable(){} ~Uncopyable(){}; private: Uncopyable(const Uncopyable&); Uncopyable& operator=(const Uncopyable&); }; class HomeForSale:public Uncopyable { …… };
相关文章推荐
- C++ 与 C
- C++语言基础 例程 字符串类
- C++语言基础 例程 函数模板
- C++语言基础 例程 函数重载
- C++语言基础 例程 有默认参数的函数
- C++语言基础 例程 内置函数
- 3D dungeon
- C++语言基础 例程 C++中的输入和输出
- C++语言基础 例程 C++的数据类型和运算符
- Effective C++ 条款5
- C语言宏定义
- assert用法,原理,改编(C++)
- Elements of Modern C++ Style
- C++ stderr/stdout 重定向到文件
- Effective c++ 3/e item 15 疑問解惑
- OpenCV+C++ 视频图片相互转换
- 【学习笔记】【C语言】char类型
- Division
- QQ聊天 GIF转为IplImage的解决方法的問題
- logandfileandconfigandconverion