条款5:了解C++默默编写并且调用了哪些函数

1、  构造函数,析构函数,拷贝赋值函数,拷贝构造函数。

class Empty
{
public:
//默认构造函数
Empty(){};
//拷贝构造函数
Empty(const Empty& rhs){}
//析构函数
~Empty(){} //拷贝赋值函数
Empty& operator=(const Empty& rhs){};
}; //默认构造函数
Empty e1;
//拷贝构造函数
Empty e2(e1);
//拷贝赋值函数
Empty e3=e1;

2、  类中包含引用的时候无法进行一般的赋值操作,必须自己定义拷贝赋值操作符

条款6:若不想使用编译器自动生成的函数就应该明确拒绝

1、  声明为private可以阻止(单不绝对安全,member函数和friend函数还可以调用)

class Empty
{
public:
//默认构造函数
Empty(){};
//析构函数
~Empty(){} private:
//拷贝构造函数
Empty(const Empty& rhs){}
//拷贝赋值函数
Empty& operator=(const Empty& rhs){};
};

2、  声明一个uncopyable的基类,再继承它

class Empty:private Uncopyable
{
public:
//默认构造函数
Empty(){};
//析构函数
~Empty(){} }; class Uncopyable
{
public:
//默认构造函数
Uncopyable(){};
//析构函数
~Uncopyable(){} private:
//拷贝构造函数
Uncopyable(const Uncopyable& ){}
//拷贝赋值函数
Uncopyable& operator=(const Uncopyable& ){};
};

条款7:为多态基类声明virtual析构函数

1、  基类的析构函数要加virtual,防止delete的时候局部销毁

2、  不是基类别就不需要

条款8:别让异常跳出析构函数

1、  析构函数在处理的时候一定要加上try catch

2、  如果需要对异常进行反应,则把处理写成一个普通的方法处理,加上标志位,运行正常后再在析构函数中处理

条款9:绝不在构造函数和析构函数中调用virual函数

条款10:令operator= 返回一个reference to *this

1、  class& operator=(){return *this}

条款11:在operator=中处理自我辅值

1、确定在一个函数中包含2个对象的时候,这两个对象是同一个对象的情况下是否正确

条款12复制对象时勿忘记其每一个成分

1、

Effective C++ 笔记2(构造,析构,赋值)的更多相关文章

  1. Effective C++笔记:构造/析构/赋值运算

    条款05:了解C++默默编写并调用哪些函数 默认构造函数.拷贝构造函数.拷贝赋值函数.析构函数构成了一个类的脊梁,只有良好的处理这些函数的定义才能保证类的设计良好性. 当我们没有人为的定义上面的几个函 ...

  2. Effective C++ 笔记二 构造/析构/赋值运算

    条款05:了解C++默默编写并调用哪些函数 编译器默认声明一个default构造函数.一个copy构造函数.一个copy assignment操作符和一个析构函数.这些函数都是public且inlin ...

  3. EC++学习笔记(二) 构造/析构/赋值

    条款05:了解c++默默编写并调用了哪些函数 编译器可以暗自为 class 创建default构造函数,copy构造函数,copy assignment操作和析构函数所有这些函数都是 public 并 ...

  4. 《Effective C++》第2章 构造/析构/赋值运算(2)-读书笔记

    章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...

  5. 《Effective C++》第2章 构造/析构/赋值运算(1)-读书笔记

    章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...

  6. EffectiveC++ 第2章 构造/析构/赋值运算

    我根据自己的理解,对原文的精华部分进行了提炼,并在一些难以理解的地方加上了自己的"可能比较准确"的「翻译」. Chapter 2 构造 / 析构 / 赋值 条款 05:了解C++ ...

  7. Effective C++ —— 构造/析构/赋值运算(二)

    条款05 : 了解C++默默编写并调用哪些函数 编译器可以暗自为class创建default构造函数.copy构造函数.copy assignment操作符,以及析构函数. 1. default构造函 ...

  8. Effective C++笔记(二):构造/析构/赋值运算

    参考:http://www.cnblogs.com/ronny/p/3740926.html 条款05:了解C++默默编写并调用哪些函数 如果自定义一个空类的话,会自动生成默认构造函数.拷贝构造函数. ...

  9. 《Effective C++》读书笔记 被你忽略的关于构造析构赋值

    如果程序员没有定义,那么编译器会默认隐式为你创建一个copy构造函数,一个copy赋值操作符,一个析构函数.另外如果你没有声明任何构造函数,编译器会为你声明一个default构造函数. 但是只有当这些 ...

  10. Effective C++ -- 构造析构赋值运算

    05.了解C++默默编写并调用哪些函数 编译产生的析构函数时non-virtual,除非这个类的基类析构函数为virtual 成员变量中有引用和const成员时,无法自己主动生成copy assign ...

随机推荐

  1. 关于BCGControlbar16.1版本的安装与使用

    csdn上有BCGControlbar16.1版本的下载,地址:http://download.csdn.net/detail/wangxiangdong_sl/4821726带key,个人亲测VS2 ...

  2. eclipse常用快捷键

    1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了.这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如applic*.xm ...

  3. 如何在openresty里解析域名

    转:原文:http://hambut.com/2016/09/09/how-to-resolve-the-domain-name-in-openresty/?utm_source=tuicool&am ...

  4. elastic search使用总结

    1. elasticsearch安装 官方下载地址:https://www.elastic.co/downloads/elasticsearch 解压文件 elasticsearch-2.4.0.zi ...

  5. 获取pe文件的文件类型

    工程文件petype.cpp通过调用pefile类中的函数获取文件类型. 文件类型的判断通过5个监测点完成. 监测点1:dos头的e_magic 监测点2:nt头的Signature 监测点3:文件头 ...

  6. 【极力分享】[C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例【转载自https://segmentfault.com/a/1190000004152660】

      [C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例 本文我们来学习一下在Entity Framework中使用Cont ...

  7. 枚举扩展方法获取枚举Description

    枚举扩展方法 /// <summary> /// 扩展方法,获得枚举的Description /// </summary> /// <param name="v ...

  8. RSA非对称性前端加密后端解密

    前端加密代码 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...

  9. DevExpress 在使用Ribbon皮肤时标题栏不变化的原因

    将 form的 AllowFormGlass 属性 该为False 就可以标题栏皮肤化了.

  10. 463. Island Perimeter

    https://leetcode.com/problems/island-perimeter/ 在一个N×N的矩阵中,N<100,1代表岛,0代表海,岛内没有海,求岛的周长 [[0,1,0,0] ...