传统的面向过程编程方式都是以具体实现过程为核心,以算法为驱动;而面向对象编程方式是以对象为核心,以消息为驱动。
面向对象程序设计几个基本特征:
封装、继承、多态
封装有利于隐藏对象内部的信息,提高程序的安全性
采用继承机制,便于实现代码重用
采用多态,便于隐藏代码细节,使得代码能够模块化
复合类:一个类的某些属性是某些类的对象
C++动态特性:
多态性、动态联编、虚函数等
多态的关键之处就是使用指向基类的指针或引用来操作对象
虚函数:指向基类的指针在操作其多态类对象时,会根据不同的类对象调用相应的函数,这个函数就是虚函数
向函数传递对象方式:
1.值传递
2.地址传递
对象指针作为函数参数 void add(Test *t) 调用:add(&tt)
对象引用作为函数参数 void add(Test &t) 调用:add(tt)
多重继承时,当变量不知道来自哪一个类时,会出现编译错误。
解决方法:
1.使用全局分辨符“::”
2.使用虚基类,所谓虚基类,就是在继承基类时加入virtual关键字,这样一来派生类将继承虚基类,而应用中将会只存在一个基类的拷贝。
在C++中,为了实现晚捆绑,必须在基类中使用virtual关键字声明函数,即所谓的虚函数
虚函数是一种动态的重载方式,虚函数的实质就是实现了多态性,多态性将接口与实现分离。多态性是通过指向基类的指针或者引用来操纵对象。
抽象类就是带有纯虚函数的类,纯虚函数就是提供一个函数的接口,然后自己什么都不干。但是继承它的类必须都实现这个函数。除非继承类还是抽象类,那就另当别论了。
C++中多态可以分为静态多态和动态多态
静态多态:编译期多态,它是在编译期间通过函数重载和运算符重载的方式来决定被调用函数的。
动态多态:运行期多态,它可以通过继承和虚函数来实现。在程序运行过程中动态地绑定想要调用的函数。