一.基本概念
- 抽象:是指对具体问题进行概括,抽出一类对象的公共性质并加以描述的过程;(包括数据抽象和行为抽象)
- 封装:将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的函数代码进行有机地结合,形成“类”,其中的数据和函数都是类的成员
- 继承:特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承
- 多态1:指一段程序能够处理多种类型对象的能力(包括强制多态、重载多态、类型参数化多态、包含多态)
- 多态2:指同样的消息被不同类型的对象接收时导致不同的行为(分为编译时的多态和运行时的多态)
- 运算符重载:指对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时导致不同的行为
- 静态生存期:如果对象的生存期与程序的运行期相同,则称它具有静态生存期
二.代码样例:
1.继承
/*优先调用基类构造函数,调用顺序按照被继承时声明的顺序调用*/
//与初始化列表的顺序无关,若父类是无参构造,则无需传参也会调用
class SonBase :public Base1, public Base2, public Base3 {
public:
SonBase(int a, int b,int c,int d):Base1(a),member1(c),Base2(b),member2(d) {
cout << "SonBase的构造函数" << endl;
}
private: //内嵌的基类对象
Base1 member1;
Base2 member2;
Base3 member3; //该对象所属类无 有参构造函数
};
2.虚基类(继承)
class Base1 :public Base {
public:
virtual void display() const; //子类对父类的虚函数的重写,声明时virtual关键字可加可不加
};
void Base1::display() const{ //实现时不可加
cout << "第一个子类Base1的重写" << endl;
}
3.运算符重载
/*运算符重载*/
class Complex {
public:
Complex(double r = 0.0, double i = 0.0) {
real = r;
image = i;
}
void display() const;
Complex operator+(const Complex& c1) const; //成员函数(双目)
friend Complex operator-(const Complex& c1, const Complex& c2); //非成员函数(双目)
Complex operator++() const; //成员函数(单目前置)
Complex operator++(int) const; //成员函数(单目后置),声明中形参名可省略不写
private:
double real;
double image;
};
4.函数模板
template<class T>
void my_swap(T &a, T &b) {
T c = a;
a = b;
b = c;
}