c++ plus 13章 笔记

来源:互联网 发布:崇明智慧岛数据产业园 编辑:程序博客网 时间:2024/05/02 22:34

1.应定义一个分配内存(而不是将指针指向已有内存)的复制构造函数.这样程序能够将类对象初始化为另一个类对象.
这种构造函数的原型通常如下:
 className(const className & )
同样,赋值操作符的原型如下:
 className & className::operator = (const className &)
转换函数的定义:
 className1 className1::className2(){....}

2.className *p = new className;//默认构造函数
  className a=b;//b也是a的同类,将调用复制构造函数 className(const className &)
  *p=b;//*p和b都是相同的类,将调用赋值操作符(=)
  a="Nancy Putter";//首先调用构造函数,然后调用赋值操作符(=)

3.public继承将基类的公有成员成为派生类的公有成员,基类私有部分在派生类中只能
通过基类的公有和保护方法访问

4.先构造基类对象,后构造派生类对象; 先析构派生类,后析构基类.
5.动态分配内存时(new和delete)需要 定义 析构函数,复制构造函数和重载赋值操作符.
6.纯虚函数只需在虚函数后面加上 =0即可,纯虚函数不用定义,但也不能用它属于的类来创建变量.
7.赋值操作符,构造函数,析构函数 不能被继承
8.3种继承机制比较:
 特征  公有继承   保护继承   私有继承
         公有成员变成:  派生类的公有成员  派生类的保护成员  派生类的私有成员
         保护成员变成:  派生类的保护成员  派生类的保护成员  派生类的私有成员
         私有成员变成:  只能通过基类 接口访问 只能通过基类接口访问 只能通过基类接口访问
         能否隐式向上转换: 是   是(但只能在派生类中)  否