VC++深入详解-第二章学习心得
由于之前看过C++的一些知识,所以这一章就挑一点以前比较不太在意的进行记录
首先是虚函数,纯虚函数
虚函数用关键字virtual申明,我理解成为派生类提供覆盖
纯虚函数virtual xxx()=xxx; 这个我理解成抽象类,接口之类的,供派生类进行实现。
下面的例子说明覆盖和隐藏的区别:
(概括下:函数的覆盖是发生在基类和派生类之间的,两个函数必须相同,并且有虚函数,除这种情况之外的就是隐藏了)
个人觉得隐藏和覆盖类似于java中的多态:父类的引用指向子类的对象
#include <iostream.h> class Base { public: virtual void xfn(int i) { cout << "Base :: xfn(int i)" << endl; } void yfn(float f) { cout << "Base :: yfn(float f)" << endl; } void zfn() { cout << "Base :: zfn()" <<endl; } }; class Derived : public Base { public: void xfn(int x) //覆盖 { cout << "Drived :: xfn(int i)" << endl; } void yfn(int c) //隐藏 { cout << "Drived :: yfn(int c)" << endl; } void zfn() //隐藏 { cout << "Drived :: zfn()" << endl; } }; void main() { Derived d; Base *pB = &d; Derived *pD = &d; pB ->xfn(5); pD ->xfn(5); pB ->yfn(3.14f); pD ->yfn(3.14f); pB ->zfn(); pD ->zfn(); }
接触到一个新的交换顺序的方法。。。觉得挺好玩,记录下。。
void change(int &a, int &b) { a = a + b; b = a - b; a = a - b; }