c++ 06
一、下标操作符
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的更多相关文章
- 《HelloGitHub月刊》第06期
前言 <HelloGitHub>月刊做到第06期了(已经做了6个月了),在GitHub上获得了100+的stars,虽然不多,但是我很知足了,说明有人觉得这个项目是有价值的.同时园子中的' ...
- iOS系列 基础篇 06 标签和按钮 (Label & Button)
iOS系列 基础篇 06 标签和按钮 (Label & Button) 目录: 标签控件 按钮控件 小结 标签和按钮是两个常用的控件,下面咱们逐一学习. 1. 标签控件 使用Single Vi ...
- javaSE基础06
javaSE基础06 一.匿名对象 没有名字的对象,叫做匿名对象. 1.2匿名对象的使用注意点: 1.我们一般不会用匿名对象给属性赋值的,无法获取属性值(现阶段只能设置和拿到一个属性值.只能调用一次方 ...
- 异步编程系列06章 以Task为基础的异步模式(TAP)
p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提 ...
- javascript基础06
javascript基础06 splice var del_arr = del.splice(0,2); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返 ...
- Linux 第06天
Linux 第06天 1.SAMBA服务器————(linux和windows的文件共享) 1.1 安装 yum install samba -yum 1.2 配置文件 /etc/samba/smb. ...
- plsql11.06注册码
plsql11.06注册码:Product Code(产品编号):4t46t6vydkvsxekkvf3fjnpzy5wbuhphqzserial Number(序列号):601769password ...
- 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 ...
- VMware10.06精简版安装后台运行
VMware10.06精简版安装时会出现一个安装功能选择菜单,里面有一条后台运行必选功能,一般人会跳过条.当你打算在服务器上用vmware时,一定要安装后台运行服务,否则你无法换出正在运行的后台虚拟机 ...
- 驱动开发学习笔记. 0.06 嵌入式linux视频开发之预备知识
驱动开发读书笔记. 0.06 嵌入式linux视频开发之预备知识 由于毕业设计选择了嵌入式linux视频开发相关的项目,于是找了相关的资料,下面是一下预备知识 UVC : UVC,全称为:USB v ...
随机推荐
- php+jquery+ajax+json的一个最简单实例
html页面: <html> <head> <meta http-equiv="content-type" content="text/ht ...
- C#中单问号,双问号的用法(转)
原文:http://hi.baidu.com/guodong828/blog/item/c78fc23f847314cb7d1e7193.html 单问号---用于给变量设初值的时候,给变量(int类 ...
- 专题笔记--Java 类集框架
Java 类集框架 1. Java类集框架产生的原因 在基础的应用中,我们可以通过数组来保存一组对象或者基本数据,但数组的大小是不可更改的,因此出于灵活性的考虑和对空间价值的担忧,我们可以使用链表来实 ...
- 第28讲 UI组件之 ListView和ArrayAdapter
第28讲 UI组件之 ListView和ArrayAdapter 1. Adapter 适配器 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的 ...
- 深度剖析JDK动态代理机制
摘要 相比于静态代理,动态代理避免了开发人员编写各个繁锁的静态代理类,只需简单地指定一组接口及目标类对象就能动态的获得代理对象. 代理模式 使用代理模式必须要让代理类和目标类实现相同的接口,客户端通过 ...
- MapReduce新版客户端API源码分析
使用MapReduce新版客户端API提交MapReduce Job需要使用 org.apache.hadoop.mapreduce.Job 类.JavaDoc给出以下使用范例. // Create ...
- MongoDB分片技术[转]
8天学通MongoDB——第六天 分片技术 在mongodb里面存在另一种集群,就是分片技术,跟sql server的表分区类似,我们知道当数据量达到T级别的时候,我们的磁盘,内存 就吃不消了,针 ...
- C语言中static关键字的作用
static的作用(精辟分析) 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加sta ...
- Entity Framework - Func引起的数据库全表查询
原文:http://www.cnblogs.com/dudu/archive/2012/04/01/enitity_framework_func.html 使用 Entity Framework 最要 ...
- 简单JS多级下拉框无刷新
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...