小结:虚函数
来源:互联网 发布:橱柜拆单软件 编辑:程序博客网 时间:2024/04/29 19:43
关于虚函数的一些要点:
1.在基类声明函数时使用关键字virtual使该函数在基类以及所有派生类中是虚的
2.在继承中,只有使用指针或者引用的方式来调用虚函数时,虚函数才能发挥多态性的作用
3.被继承的虚函数仍然是虚函数
4.编译器对非虚方法使用静态联编,对虚方法使用动态联编。在虚函数中使用成员限定可以强行解除动态联编,如:
(B为A类的派生类,并在A类中定义了虚函数get())
A*p =new new B;
cout<<p->A::get(); //成员名限定会强制使用静态联编来调用类A函数
5.对于静态联编,由于对象不用对自身进行跟踪,因此速度浪费比较小,而动态联编虽然可以动态跟踪对象,灵活性比较强,但是速度浪费严重。.如果要在派生类中重新定义基类的方法,则将它设置为虚方法。但如果,派生类不重新定义基类的任何方法,也不需要使用动态联编,则使用静态联编更合理,效率更高。
另一个要注意的地方是,在以上例子中还定义了虚析构函数。如果析构函数不是虚函数,则它只具备父类析构函数的功能,在delete时delete的对象是父类的对象,而子类没有销毁,造成内存的泄露,定义虚析构函数,则在上述代码中执行delete p时,先调用派生类的析构函数,派生类的析构函数再自动调用基类的析构函数,使构造的整个对象都会销毁。从运行结果可以看到delete执行的过程。
- 虚函数小结
- 小结:虚函数
- C++虚函数小结
- C++虚函数小结
- C++多态,虚函数小结
- C++虚函数和虚析构函数小结
- 函数小结
- 函数小结
- 关于虚函数表的小结
- C++ 虚函数表解析小结
- MsgBox函数用法小结
- InputBox函数用法小结
- VB 函数小结
- Inline函数用法小结
- MsgBox函数用法小结
- 刷新函数小结
- 时间处理函数小结
- 函数调用方式小结
- Xmanager连接Linux远程桌面
- 在IT行业获得成功,你只需一项技能
- Sql Server中通配符的使用
- [Topcoder] SRM585 Div 2
- [C#] 数据库操作 - Insert, Read, Delete, Update
- 小结:虚函数
- SQL条件中“is null”谓词导致全表扫描问题优化
- Linux inode笔记
- android4.0触摸屏(touchscreen)以及屏幕按键驱动解析
- 传360周鸿祎曾试图阻止百度收购91无线
- HDU——2053——Switch Game
- Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- Ubuntu 12.04 64位编译android2.3需要安装的软件
- C#中的txtreadout命令