标签:style blog color io os 使用 strong sp div
封装
在C++中就表现为把一个具体的事物封装成类
封装可以隐藏细节,让代码模块化。
一个类的成员有三种访问权限:
继承
可以分为单一继承和多重继承
继承方式:public private protected,class默认private继承,而structure默认public继承
一般析构函数会定义成虚函数,若不是的话析构时会只调用base的析构函数而不调用derived的析构
虚函数 & 多态性
父类的成员函数前面+virtual就变成了虚函数
纯虚函数就是父类只定义了虚函数而没有实现,纯虚函数必须在子类中实现,否则子类仍为虚类需要子类的子类去实现纯虚函数(也就是,哪一层子类实现的纯虚函数,哪一层的子类才可以被初始化)
纯虚函数相当于一个接口,子类必须实现这个接口才可以使用
而多态性则是为了接口重用,也就是无论传递过来的是哪个子类的对象,都能调用相应的子类的函数
代码如下
#include <iostream> using namespace std; int main() { class base{ public: base(){}; ~base(){}; void aa(){cout<<"base"<<endl;}; }; class derived1:public base{ public: void aa(){cout<<"derived1"<<endl;}; ~derived1(){}; }; class derived2:public derived1{ public: void aa(){cout<<"derived2"<<endl;}; }; base *a; derived1 d1; derived2 d2; a = &d1; a->aa(); a = &d2; a->aa(); return 0; }
输出为
derived1
derived2
可见有了多态性,我们用子类的实例初始化基类的指针,调用的才是子类相应的函数。若把virtual去掉,那么输出就是
base
base
此时只能调用基类的相应函数
标签:style blog color io os 使用 strong sp div
原文地址:http://www.cnblogs.com/JasonGu/p/3993734.html