Notes of CPP
Object-Oriented Programming
三大特性
- 数据抽象:可以将类的接口与实现分离
- 继承:可以定义相似的类型并对其相似关系建模
- 动态绑定:可以在一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象
类自规
- 每个类各自控制其对象的初始化过程
- 每个类负责自己成员的访问权限
- 每个类定义自己作用域
继承
- 派生类的成员或友元只能访问派生类对象中的基类部分的受保护成员
虚函数
- 任何构造函数之外的非静态函数都可以是虚函数
- 关键字
virtual
只能出现在类内部的声明语句之前而不能用于类外部的函数定义 - 如果基类把一个函数声明为虚函数,则该函数在派生类中隐式地也是虚函数
静态态类型与动态类型
基类的指针或引用的静态类型可能与其动态类型不一致
- 静态类型:变量声明时的类型或表达式生成的类型,在编译时总是已知的
- 动态类型:变量或表达式表示的内存中的对象的类型,直到运行时才可知
类型转换
- 从派生类向基类的类型转换只对指针或引用类型有效
- 基类向派生类不存在隐式类型转换
- 派生类向基类的类型转换可能会由于访问受限而变得不可行
Others
- 一条声明语句的目的是令程序知晓某个名字的存在以及该名字表示一个什么样的实体
- 直接初始化与拷贝初始化
- 友元关系不能传递也不能继承