一. 类和对象
1. 通过分析“对象”的属性和行为设计出一个类(面向对象)
2. 类就是数据类型
简单类型:只能表示一个属性(变量),C/c++内建数据类型。
数组类型:可以表示多个属性(变量),类型必须相同。
结构类型:可以表示多个属性(变量),但缺少行为(函数)。
类类型:既能表示属性,也能表示行为,一种复合的数据类型。
3. 对象就类这种数据类型创建出的实例,相当于结构变量
1. 类的一般形式
class 类名:继承方式 父亲
{
public/private/protected://访问控制限制符
成员变量
成员函数 //结构体没有的
// 构造函数
类名(形参表)
{
}
// 析构函数
~类名(void)
{
}
};
每个类都有四大函数:构造函数,析构函数,拷贝构造函数,赋值构造函数(自己不定义,就会自带缺省的函数) 缺省:默认的意思
2. 类的访问控制限定符
public:公有成员,在任何位置都可以访问
private:私有成员,只能类的成员函数中访问
protected:受保护成员,只能在类和子类中访问
类中的成员变量、成员函数默认是 private,结构中的成员变量、成员函数默认是public。
注意:c++中的类和结构的区别只有成员函数和成员变量的默认访问权限不同。
一、类的继承
1、共性与个性
表达不同类型事物之间共有的属性和行为
个性用于刻画每种事物特有的属性和行为
2、共性表示为父类(基类),个性表示为子类(派生类)。
子类继承自父类
基类派生出子类
二、继承的基本语法
1、继承表
一个子类可以同时继承零到多个父,每个父类的继承方式可以相同也可以不同。
class 子类:继承方式1 父类1,继承方式2 父类2,…
{
}
2、继承方式
public 公有继承:父类的特性可通过子类向外扩展。
private 私有继承:父类的特性只能为子类所有。
protected 保护继承:父类的特性只能在继承链内扩展。
三、继承的基本特点
1、公共特点(所有继承都有的特点)
子类对象可以当作父类对象使用,子类对象与父类没有本质上的区别。
子类的逻辑空间小于父类,但它的物理空间要大于等于父类。
子类对象 IS A 父类对象
2、向上和向下转换(造型)
从子类到父类:子类的指针或引用可以隐式转换成父类的指针或引用,这是一种缩小类型的转换,对于编译器来说是安全(父类指针指向子类对象,是安全)。
从父类到子类:父类的指针或引用不可以转换成子类的指针或引用,这是一种扩大类型的转换,在编译器看来是危险的(子类的指针指向父类的对象,不安全)。
编译器仅仅是检查指针或引用的数据类型,而对实际引用的目标对象不关心(构成多态的基础)。
类型一致:父类的指针或引用类型是否需要转换成实际的指针或引用由程序员自己决定。
3、子类会继承父类的所有成员(公开、私有、保护)
4、子类会隐藏父类的同名成员
1、可以通过域限定符 父类::隐藏成员 进行访问父类中的隐藏成员。
2、可以使用指针的指针或引用来指针子类对象,然后访问父类中的隐藏成员。
5、虽然子类继承所有父类中的成员,但不能访问父类中的私有成员。