c++期末复习多态与虚函数

面向对象的多态性可以分为四类:重载多态、强制多态、包含多态和参数多态

函数重载属于重载多态

不同类型变量相加强制类型转化,属于强制多态

包含多态是类族中不同类的成员函数重名,需要虚函数实现重写属于包含多态

参数多态主要是类模板实现

静态联编:联编在编译连接时进行

静态联编的执行效率高

动态联编:在程序运行时执行的动态绑定

提供了灵活的编程灵性、问题抽样性、程序易维护性

运算符重载属于静态联编

运算符重载主要包含为重载为成员函数和重载为友元函数

只能重载c++已有的运算符,不能重载的有. 、* 、::、 sizeof() 、?:

重载后的优先级和结合性不变

友元函数必须全部参数必须通过形参传递给运算符重载函数

特殊的对于前置和后置运算符++ 前置 类名&operator++(类名&)后置 类名 operator++(类名引用,int)int只用于区别与前置

重载插入运算符 friend istream & operator>>(istream& in ,complex &c;){return in;}

类型转换函数

Int a=10;

Operator double()

{return a;}

虚函数:

因静态成员函数和友元函数不属于某个类,所以虚函数不可以是两者

虚函数定义为内联函数无效

构造函数不可是虚函数,析构函数可以是,且通常是

定义一基类变量指针

基类对象的地址或者派生类对象的地址赋值给该指针变量

指针-》虚函数的形式调用虚函数

要求派生类函数名、函数类型、参数个数和类型全部与基类的虚函数一致

基类声明虚函数,其派生类的同名成员函数自动成为虚函数

虚函数与重载函数的区别:

虚函数根据对象不同去调用不同类的虚函数

虚函数是动态联编

构造函数可以重载,析构函数不能重载,虚函数不能是构造函数,析构函数一般是虚函数

对象的存储:

非静态数据成员放在每一个对象体内作为对象的专有成员

静态数据成员被提取出来存放在静态区,所有对象数据共享

静态成员和非静态成员函数都是所有对象共享,都保存在静态存储区,静态成员和构造函数只初始化一次

纯虚函数:

提供了一个公共继承接口

Virtual fun()=0存在纯虚函数的类属于抽象类,无实际意义,不可实例化,若派生类没有定义纯虚函数,派生类也是抽象类

不能声明抽象类的对象,但是可以声明抽象类的指针和引用

你可能感兴趣的:(c++,开发语言,算法,游戏程序)