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均调用了复制构造函数

  • 相关阅读:
    问题九十五:Reverse Text
    类对象Java设计模式之十八(中介者模式)
    节点离散温度场有限差分(有限容积)程序入门之三:2D温度场显式迭代计算(暂不考虑潜热)
    分析打开hdu 3335 (最小路径覆盖)
    结点树数据结构:树的定义和基本概念
    数据手动输入c++ 结构体练习 结构体重的char数组指针
    反转指向字符串反转C++实现源码(带测试用例)
    采样干扰十大滤波算法程序大全
    前缀子节点并行前缀求和的算法
    FatMouse's Speed
  • 原文地址:https://www.cnblogs.com/yangtianxing/p/2535370.html
Copyright © 2011-2022 走看看