public,private,protected访问修饰符
public成员:在程序中类的外部是可以访问的,可以不使用成员函数来获得和设置成员变量的值;
private成员:在函数或类的外部不可访问,只有在类内部或者友元函数中可以访问;默认情况下,类的所有成员都是私有的;
protected:保护成员,与私有成员类似,但是在派生类(子类)中可以访问;
继承中的特点:
public继承: 基类中public,protected,private成员的访问属性在派生类中分别变成:public, protected, private;
protected继承: 基类中public,protected,private成员的访问属性在派生类中分别变成:protected, protected, private;
private继承:基类中public,protected,private成员的访问属性在派生类中分别变成:private, private, private;
友元函数
定义在类的外部,但是有权访问类的private和protected成员的函数。友元函数的原型在类的定义中出现过,但不是类的成员函数。
C++ 中的this指针
在C++中,每一个对象都能通过this指针来访问自己的地址;this指针是所有成员函数的隐含参数;在成员函数内部,可以用来指向调用对象;
C++类的静态成员
静态成员:无论创建多少个类的对象,静态成员都只有一个副本;在类的所有对象中是共享的。静态成员的初始化不能放在类中,但是可通过范围解析运算符::重新声明静态变量来对它进行初始化。
静态成员函数:函数与类的任何特定相互独立,在对象不存在的情况下也能被调用;只能访问静态成员数据其他静态成员函数和类外部的其他函数。
C++继承
继承允许我们依据一个已有的类(基类)来定义另一个类(派生类);
一个基类可以派生自多个类;
C++重载运算符和重载函数
C++允许在同一作用域中的某个函数或运算符指定多个定义,分别称为函数重载和运算符重载;
重载声明是指一个与之前已经在该作用域内声明过的方法或函数具有相同的名称的声明,但是他们的参数列表和定义不相同;
函数重载:在同一作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数必须不同;
C++多态
C++多态,当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态;多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。
静态多态:静态链接;早绑定;
虚函数(virtual 关键字声明):在基类中定义虚函数,告诉编译器不要静态链接到该函数。
C++数据抽象
数据抽象是指只向外界提供关键信息,隐藏其后台的实现细节,只表现必要的信息而不呈现细节;接口和实现分离;(实现的细节与相关的数据分离开)
数据抽象的优点:
- 类的内部受到保护,不会因为无意的用户错误导致对象状态受损;
- 类的实现可以随着时间而繁盛变化,以便应对不断变化的需求;
C++数据封装
C++接口(抽象类)
接口描述了类的行为和功能,而不需要完成类的特定实现;C++接口是用抽象类实现的,抽象类与数据抽象互不混淆。
数据抽象:把实现细节和相关的数据分离开的概念;
类中至少有一个函数被声明为纯虚函数,这个类就是抽象类。
抽象类不能被实例化,只能用作接口,被其他类继承;用于实例化对象的类称为具体类;