一、下标操作符
A a (...);
cout << a[3] << endl;
cout << a.operator[] (3) << endl;
cout << a["张飞"] << endl;
cout << a.operator[] ("张飞") << endl;

二、函数运算符
如果为一个类定义了形如“operator()”的运算符,那么该类的对象就可以当做函数用,该函数的参数表和返回类型就是operator()运算符函数的的参数表和返回类型。

三、解引用(*)和间接访问(->)运算符
class PA {
public:
  PA (A* pa) : m_pa (pa) {}
  ~PA (void) { delete m_pa; }
private:
  A* m_pa;
};
void foo (void) {
  PA pa (new A (...));
  ...
}
智能指针:auto_ptr

四、类型转换运算符

五、new/delete运算符

六、不能重载的运算符
:: - 作用域限定
.  - 直接成员访问
.* - 成员指针直接解引用
?: - 三目
sizeof - 字节数,sizeof (a = 5)
typeid - 类型信息

七、继承的基本概念和语法
人类:姓名、吃饭
学生是人:学号、学习
教师是人:工资、授课
     人类 - 基类(父类)- 姓名、吃饭
    /    \  继承 ^V 派生
学生      教师 - 子类(派生类)
|            |
学号、学习    工资、授课
继承表语法:
class 子类 : 继承方式1 基类1, 继承方式2 基类2, ... { ... };
继承方式:公有(public)、私有(private)、保护(protected)

八、继承的基本性质
1.基类中的一切都为子类所继承,就如同是子类的一样。
2.基类的私有部分虽然存在于子类中,但不能为子类直接访问。基类的保护部分可以为子类直接访问。
3.任何时候将子类对象的地址赋值给基类类型的指针都是安全的,反之存在风险。

九、继承方式对访控属性的影响
1.访控属性
访控属性  访控属性 基类 子类 外部 友元
限定符 
public    公有     OK   OK   OK   OK
protected 保护     OK   OK   NO   OK
private   私有     OK   NO   NO   OK
2.继承方式
当试图通过一个子类对象访问该对象从其基类继承的成员时,才需要考虑继承方式对访控属性的影响。
A->B->C
B中访问A的成员:不需要考虑B从A的继承方式
C中访问A的成员:需要考虑B从A的继承方式
main中
B b;
通过b访问A的成员:需要考虑B从A的继承方式
基类中的 公有子类 保护子类 私有子类
----------------------------------
公有成员 公有成员 保护成员 私有成员
保护成员 保护成员 保护成员 私有成员
私有成员 私有成员 私有成员 私有成员
表示IsA的关系,一般使用公有继承。
学生是人
教师是人
私用继承,实现继承,仅仅将基类作为子类的实现工具,同时又不希望基类的公有接口通过子类被扩散。保护继承允许基类的公有接口在子类中扩散,但是不能对外部扩散。
class DCT {
public:
  void codec (void) { ... };
};
class Jpeg : protected DCT {
public:
  void render (void) {
    ...
    m_dct.codec ();
    ...
  }
protected;
  DCT m_dct;
};
class Jpeg2000 : public Jpeg {
public:
  void render (void) {
    ...
    codec ();
    ...
  }
};
Jpeg jpeg;
jpeg.code (); // ERROR !

十、子类的构造和析构
1.如果在子类的构造函数的初始化表中没有显式地指明基类部分如何初始化,那么系统就以以无参的方式初始化子类对象中的基类子对象,前提是基类类型支持无参构造。否则,就根据所指定的构造函数和参数对基类部分进行初始化。
2.构造和析构顺序
构造:基类->成员->子类
析构:子类->成员->基类
如果有多个成员,则按照其在类中被声明的顺序依次构造,如果有多个基类,则按照继承表的顺序依次构造,析构的顺序与构造严格相反。
3.子类的析构函数(无论自定义还是缺省),都会自动调用基类的析构函数,但是基类的析构函数不会调用子类的析构函数。因此,delete一个指向子类对象的基类指针,将可能引发内存泄漏。

十一、子类的拷贝构造和拷贝赋值
子类的拷贝构造和拷贝赋值需要兼顾子类对象中基类子对象的拷贝,否则该子对象将被已无参方式构造,或者无法得到拷贝源的内容。

十二、名字隐藏
在子类中可以定义和基类同名的标识符,将后者隐藏起来。可以通过作用域限定解隐藏。

c++ 06的更多相关文章

  1. 《HelloGitHub月刊》第06期

    前言 <HelloGitHub>月刊做到第06期了(已经做了6个月了),在GitHub上获得了100+的stars,虽然不多,但是我很知足了,说明有人觉得这个项目是有价值的.同时园子中的' ...

  2. iOS系列 基础篇 06 标签和按钮 (Label & Button)

    iOS系列 基础篇 06 标签和按钮 (Label & Button) 目录: 标签控件 按钮控件 小结 标签和按钮是两个常用的控件,下面咱们逐一学习. 1. 标签控件 使用Single Vi ...

  3. javaSE基础06

    javaSE基础06 一.匿名对象 没有名字的对象,叫做匿名对象. 1.2匿名对象的使用注意点: 1.我们一般不会用匿名对象给属性赋值的,无法获取属性值(现阶段只能设置和拿到一个属性值.只能调用一次方 ...

  4. 异步编程系列06章 以Task为基础的异步模式(TAP)

    p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提 ...

  5. javascript基础06

      javascript基础06 splice var del_arr = del.splice(0,2); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返 ...

  6. Linux 第06天

    Linux 第06天 1.SAMBA服务器————(linux和windows的文件共享) 1.1 安装 yum install samba -yum 1.2 配置文件 /etc/samba/smb. ...

  7. plsql11.06注册码

    plsql11.06注册码:Product Code(产品编号):4t46t6vydkvsxekkvf3fjnpzy5wbuhphqzserial Number(序列号):601769password ...

  8. shell脚本中的几个括号总结(小括号/大括号/花括号)--from:http://www.cnblogs.com/hanyan225/archive/2011/10/06/2199652.html

    在Shell中的小括号,大括号结构和有括号的变量,命令的用法如下: 1.${var}2.$(cmd)3.()和{}4.${var:-string},${var:+string},${var:=stri ...

  9. VMware10.06精简版安装后台运行

    VMware10.06精简版安装时会出现一个安装功能选择菜单,里面有一条后台运行必选功能,一般人会跳过条.当你打算在服务器上用vmware时,一定要安装后台运行服务,否则你无法换出正在运行的后台虚拟机 ...

  10. 驱动开发学习笔记. 0.06 嵌入式linux视频开发之预备知识

    驱动开发读书笔记. 0.06  嵌入式linux视频开发之预备知识 由于毕业设计选择了嵌入式linux视频开发相关的项目,于是找了相关的资料,下面是一下预备知识 UVC : UVC,全称为:USB v ...

随机推荐

  1. hibernate 对 sql server 2005 分页改进

    Hibernate 可以实现分页查询 如下 Query q = session.createQuery("from Cat as c"); q.setFirstResult(100 ...

  2. 使用css框架的优缺点

    使用css框架的优点 1.加速开发 CSS框架提供通用的代码(如reset,和移动端开发的一些常用设置)和许多丰富的UI组件样式——因此我们不需要从头开始写. 2.无兼容性烦恼 CSS框架解决了各个浏 ...

  3. 原生javascript 获得css样式有几种方法?

    css 样式分为行内样式和 外部样式: 1.javascript 获得行内样式 : 可以使用  ele.style."属性名称"(如果遇到属性名称带有"-", ...

  4. 用SNMP协议实现系统信息监控--CentOS

    (1)  安装SNMP客户端以及服务端 安装内容为三项:net-snmp  net-snmp-devel   net-snmp-utils 安装命令:yum install net-snmp net- ...

  5. 超长英文(代码)自动换行的样式(CSS)

    如何想让一连串文字在显示可以自动换行,而不会把在代码中使用的容器撑开,则在文章的CSS样式处加上以下代码即可: table-layout: fixed; word-wrap:break-word;或者 ...

  6. ASP.NET中过滤HTML字符串的两个方法

    先记下来,以作备用! /// <summary>去除HTML标记 /// /// </summary> /// <param name="Htmlstring& ...

  7. js+图片实现图片flash效果

    var pic_width=685; //图片宽度 var pic_height=225; // 图片高度 var button_pos=4; //按扭位置 1左 2右 3上 4下 var stop_ ...

  8. Wireshark 使用教程

    原文出处   http://blog.sina.com.cn/s/blog_5d527ff00100dwph.html Wireshark是世界上最流行的网络分析工具.这个强大的工具可以捕捉网络中的数 ...

  9. .net 判断日期格式yyyy-MM-dd hh:MM:ss的正则表达式

    加上引用: using System.Text.RegularExpressions; /// <summary> /// 检查字符串是否是日期格式        /// </sum ...

  10. VC中遍历进程并获取进程信息

    代码如下: /***************************************************/ /* 函数: 遍历进程信息 /* 参数:进程名称 例如: aaa.exe /* ...