zoukankan      html  css  js  c++  java
  • Professional C++读书笔记04

    2012-05-18

    Chapter08

    1、初始化列表:允许在创建数据成员的同时完成数据成员的初始化

             语法:以冒号开头,以逗号做分隔符,每个元素分别对一个数据成员初始化,可以使用函数记法

             例:SpreadsheetCell::SpreadsheetCell():mValue(0),mString(“”);

             注:在构造函数体内为一个对象赋值时,并没有真正构造该对象(这些数据成员已经初始化),这一点与初始化列表不同

             注:初始化列表按类定义中数据成员声明的顺序进行初始化,而非初始化列表中的顺序

    2、将对象按const引用来传递,而不是按值来传递

             按const引用效率更高,只会复制对象的地址,而不会复制对象的整个内容

    3、

    如果定义了。。。

    编译器会生成。。。

    可以创建

    举例

    未定义构造函数

    一个0参

    一个复制构造函数

    不带参数

    作另一个对象的副本

    SpreadsheetCell cell;

    SpreadsheetCell mycell (cell);

    仅一个0参构造函数

    一个复制构造函数

    不带参数

    作另一个对象的副本

    SpreadsheetCell cell;

    SpreadsheetCell mycell (cell);

    仅一个复制构造函数

    理论上可以做另一个对象的副本,实际上不能创建任何对象

    无(没办法创建第一个对象)

    仅一个单参或多参构造函数(非复制)

    一个复制构造函数

    带参数

    作另一个对象的副本

    SpreadsheetCell cell(6);

    SpreadsheetCell mycell (cell);

    一个零参和一个单参构造函数

    一个复制构造函数

    不带参数

    带参数

    做另一个对象的副本

    SpreadsheetCell cell;

    SpreadsheetCell cell(6);

    SpreadsheetCell mycell (cell);

    4、对于栈上的对象,如果出了作用域,对象会自动撤销,按声明的逆序撤销

             堆上分配的对象不会自动撤销,必须对对象指针调用delete,从而调用析构函数,并释放内存

    5、在C++中,复制只在对象初始化时才会出现,其余成为赋值

             赋值运算符:为了实现a=b=c的赋值,assignment operator应该返回一个对象的引用

             等号不一定表示赋值:当用在变量声明的时候,也可能是复制构造函数的简写

             如SpreadsheetCell aCell=myCell    //这就是复制构造函数

    6、赋值运算符

             1),检查自赋值的情况

             2),若牵涉到指针,则应该先释放原有内存,并根据rhs的大小重新分配内存

             3),返回一个对象的引用,即*this

    7、string s;

             s=str.getString();     //同一行既调用了赋值运算符(对于s),又调用了复制构造函数(对于str)

             getString返回一个string,编译器会调用一个复制构造函数创建一个临时string对象

             string s2=str.getString();                   //s2与str均调用了复制构造函数

  • 相关阅读:
    22.json&pickle&shelve
    22.BASE_DIR,os,sys
    21.time和random
    21.模块的执行以及__name__
    21.python的模块(Module)和包(Package)
    21. 对文件进行查询修改等操作
    20.装饰器和函数闭包
    19.python基础试题(三)
    19.生产者消费者模型
    19.yield和send的区别
  • 原文地址:https://www.cnblogs.com/yangtianxing/p/2535370.html
Copyright © 2011-2022 走看看