条款06:若不想使用编译器自动生成的函数,就该明确拒绝
来源:互联网 发布:java软件工程师培训班 编辑:程序博客网 时间:2024/05/16 12:51
// 条款06: 若不想使用编译器自动生成的函数,就该明确拒绝。#include <iostream>// 防止编译器自动生成copy构造函数和copy assignment操作符的两种方法:// 1.将这两个函数声明为private,并且不实现它们。如果有人调用了它们在链接期会得到一个链接错误。// 2.专门设计一个阻止copying动作的base class,然后继承它。这样在编译期间就能发现错误。class HomeForSale1 {public:HomeForSale1() {};~HomeForSale1() {};private:HomeForSale1(const HomeForSale1&);HomeForSale1& operator=(const HomeForSale1&);};class Uncopyable {protected:Uncopyable() {}; // 允许derive的对象构造和析构~Uncopyable() {};private:Uncopyable(const Uncopyable&);Uncopyable& operator=(const Uncopyable&);};class HomeForSale2 : public Uncopyable {// 该class不在私有声明那两个函数};int main06() {HomeForSale1 h1;//HomeForSale1 h2(h1); // 错误//HomeForSale1 h2 = h1; // 错误HomeForSale2 h3;//HomeForSale2 h4(h3); // 报错cannot access private member declared in class 'Uncopyable' //HomeForSale2 h4 = h3; // 报错return 0;}
阅读全文
1 0
- 条款06:若不想使用编译器自动生成的函数,就该明确拒绝.
- 条款06: 若不想使用编译器自动生成的函数,就该明确拒绝
- 条款06:若不想使用编译器自动生成的函数,就该明确拒绝
- 条款06:若不想使用编译器自动生成的函数,就该明确拒绝
- Effective C++ 条款06 若不想使用编译器自动生成的函数,就该明确拒绝
- Effective C++:条款06:若不想使用编译器自动生成的函数,就该明确拒绝。
- [Effective C++]条款06 若不想使用编译器自动生成的函数,就该明确拒绝
- 条款06:若不想使用编译器自动生成的函数,就该明确拒绝
- 条款06 若不想使用编译器自动生成的函数 就该明确拒绝
- 条款06:若不想使用编译器自动生成的函数,就该明确拒绝
- 条款06:若不想使用编译器自动生成的函数,就该明确拒绝
- 条款06:若不想使用编译器自动生成的函数,就该明确拒绝
- 条款6:若不想使用编译器自动生成的的函数,就该明确拒绝
- 条款6:若不想使用编译器自动生成的函数,就该明确拒绝
- 条款6:若不想使用编译器自动生成的函数,就该明确拒绝
- 条款6:若不想使用编译器自动生成的函数,就该明确拒绝
- 条款06:若不想编译器自动生成的函数,就该明确拒绝
- 《Effective C++》学习笔记条款06 若不想使用编译器自动生成的函数,就该明确拒绝
- 条款05:了解C++默默编写并调用哪些函数
- python爬虫系列二
- 用IDEA和命令行进行nodejs项目搭建
- 第一篇文章
- 单点登录实现原理
- 条款06:若不想使用编译器自动生成的函数,就该明确拒绝
- 数据库视频| 关系图
- 长连接和短连接
- 数组 | 数组遍历 | 排序 | 多维(二维)数组
- java求最大值,当用户输入end的时候显示刚才输入数字中的最大值
- 条款07:为多态基类声明virtual析构函数
- C++知识点(一)
- Java设计模式之适配器设计模式(项目升级案例)
- Ubuntu下安装MySQL安装及入門