条款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. 基于ZK构建统一配置中心的方案和实践

    背景: 近期使用Zk实现了一个简单的配置管理的小东西,在此开源出来,有兴趣的希望提出您的宝贵意见.如果恰巧您也使用或者接触过类似的东西, 也希望您可以分享下您觉得现在这个项目可以优化和改进的地方. 项 ...

  2. python小知识积累

  3. SLF4J: Class path contains multiple SLF4J bindings.

    库冲突导致的异常,由于多次引入SLF4j包导致. It seems you have several implementation of SLF4J; you should exclude all t ...

  4. mac gem install nokogiri error

    Gem::Ext::BuildError: ERROR: Failed to build gem native extension. /Users/angela/.rbenv/versions/1.9 ...

  5. OpenCV笔记大集锦(转载)

    整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的.如果有好的资源,也欢迎介绍和分享. 1:OpenCV学习笔记 作者:CSDN数量:55篇博文网址: ...

  6. xampp 下安装mysql-python

    pip install mysql-python修改路径PATH="$PATH":(/mysql/bin 路径)brew install mysql-connector-c

  7. 提交按钮ajax方式

    function doSubmit2(){ $("#formobj").form("submit", { url : "sjsCorporationC ...

  8. CFURLCreateStringByAddingPercentEscapes与CFURLCreateStringByReplacingPercentEscapesUsingEncoding

    iOS中访问HTTP资源需要对URL进行Encode才能正确访问. OC中有方法: - (NSString *)stringByAddingPercentEscapesUsingEncoding:(N ...

  9. (一)Netty源码学习笔记之概念解读

    尊重原创,转载注明出处,原文地址:http://www.cnblogs.com/cishengchongyan/p/6121065.html  博主最近在做网络相关的项目,因此有契机学习netty,先 ...

  10. Spring用代码来读取properties文件

    我们都知道,Spring可以@Value的方式读取properties中的值,只需要在配置文件中配置org.springframework.beans.factory.config.PropertyP ...