0%
c++基本知识
c++对c的增强主要表现在两个方面
- 在原来面向过程的机制基础上,对c语言的功能做了不少补充。
- 增加了面向对象的机制。
c++的四大特性:抽象、封装、继承和多态
- 抽象的作用是表现同一类事物的本质。类是对象的抽象,对象是类的特例,或者说类的具体表现。
- 封装主要表现在两个方面:
(1)将有关数据和操作代码封装在一个对象中形成一个基本单位,各个对象间相互独立,互不干扰。
(2)将对象的某些部分进行隐蔽,即隐蔽其内部细节,只留下部分接口,以便与外界联系,接收外界信息。
- 继承:在一个已有类的基础上建立一个新的类,该新类获得已有类的已有特征。
- 多态:对同一信息,不同对象会产生不同的响应。
类和对象的使用
- 构造函数:
是一种特殊的函数,在建立对象时自动执行。构造函数中的参数的值既可以通过实参传递,也可以指定为某些默认值。
- 析构函数:
当对象的生命周期结束时,会自动执行析构函数。
- 构造函数与析构函数的联系:
先构造后析构,后构造先析构。先进后出原则。
- 对象指针:
一个对象的存储空间的起始地址就是对象的指针。
- 静态成员:
静态成员初始化一般形式: 数据类型 类名::静态成员名=初值;
静态成员函数:如果在类外调用静态成员函数,要用类名和域运算符“::”。
- 友元:
友元函数:在类体中用friend对函数声明在类外定义,该函数为友元函数,友元函数可以访问这个类中的私有成员。
友元成员函数:friend函数不仅可以是一般函数,而且可以是另一个类中的成员函数。
友元类:友元关系是单向的不是双向的;友元关系不能传递对运算符的重载
- 格式:
函数类型 operator 运算符名称(形参表)
- 不可重载的五个运算符:
. * :: sizeof ?:
- 特性:
不能改变运算符的对象个数
不能改变运算符的优先级
不能改变运算符的结合性
不能有默认参数
- 双目运算符:< > ==
- 流提取和流插入运算符的重载
friend istream & operator >> (istream &,自定义类名 &)
friend ostream & operator << (ostream &,自定义类名 &)不同类型数据的转换
形式:类型名(数据)、(类型名)数据继承和派生
- 继承:在一个已有类的基础上建立一个新的类,该新类获得已有类的已有特征。
- 从父类产生一个新的子类称为类的派生。
- 声明派生类的一般形式:
class 派生类名:[继承方式] 基类名{派生类新增加成员};
- 继承方式:公有继承、私有继承、受保护继承。
公有继承:在派生类中不可访问基类的私有属性,其他不变。
私有继承:在派生类中不可访问基类的私有属性,其他变为私有属性。
受保护继承:在派生类中不可访问基类的私有属性,其他变为受保护属性。
- 派生类的构造函数
在执行派生类的构造函数时,调用基类的构造函数。
- 派生类新增加的同名成员覆盖了基类的同名成员。
- 虚基类:使得继承间接共同基类时只保留一份成员。
形式:class B:virtual public A{};
为了保证虚基类在派生类中之继承一次,应当在该基类的所以直接派生类中声明为虚基类,否则仍然会出现对基类的多次继承。
- 基类和派生类之间的转换:
1) 派生类对象可以向基类对象赋值
2)派生类对象可以代替基类对象向基类对象的引用进行赋值或初始化。多态性
- 多态:向不同对象发送同一信息,不同对象在接收时会产生不同的行为(即方法)。
- 利用虚函数实现多态性
虚函数的作用是允许在派生类中定义与基类同名的函数,并且通过基类指针或引用来访问基类和派生类的同名函数。
- 确定调用的具体对象的过程称为关联。
- 虚析构函数:系统只会调用基类的析构函数,而不执行派生类的析构函数。
- 纯虚函数:virtual 函数类型 函数名(参数列表)=0;
- 凡是包含纯虚函数的类都是抽象类,
这种不用来定义对象而作为一种基本类型用作继承的类称为抽象类。