函数重载特性
来源:互联网 发布:淘宝货源平台 编辑:程序博客网 时间:2024/05/17 07:28
一般函数的重载:函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。注:不将返回类型考虑到函数重载中。
虚函数的重载:重载一个虚函数时,要求函数名、返回类型、参数个数、参数类型和顺序完全相同。否则会出现以下问题:
1)如果仅仅返回类型不同,其余相同,则C++认为是错误重载,因为只靠返回类型不同的信息进行函数匹配是含糊的。
2)如果函数原型不同,仅函数名相同,则C++认为是一般函数重载,因而丢失虚特性。
举例分析:
#include<iostream>using namespace std;class A{public: virtual void vf1() {cout<<"it isvirtual function vf1() of A. \n";} virtual void vf2() {cout<<"it is virtual function vf2() of A.\n";} virtual void vf3() {cout<<"it is virtual function vf3() of A. \n";} void fun() {cout<<"it is common member function A::fun(). \n";}};class B:public A{public: void vf1() {cout<<"virtual function vf1() overloading of B. \n";} void vf2(int x) {cout<<"B::vf2()lose virtual charater.The parameter is"<<x<<'\n';} //char vf3() {};仅返回类型不同,错误重载 void fun() { cout<<"it is common over loading member function B::fun().\n";}};int main(){ B b; A *Ap=&b;//基类指针指向派生类对象 Ap->vf1();//调用B::vf1() Ap->vf2();//调用A::vf2(),函数原型不一样,丢失了虚特性,只是一般函数重载 b.vf2(5);//调用B::vf2(),显示使用对象名或类作用域指定 Ap->vf3();//调用A::vf3(),由于类B对vf3重载仅返回类型不一样,因而C++认为是错误重载 Ap->fun();//调用A::fun(),由于fun是非虚的 b.fun();//调用B::fun(),显示使用对象名或类作用域指定 system("pause"); return 0;}
运行结果:
0 0
- 函数重载特性
- 虚函数的重载特性
- 重载函数的特性-总结
- 语言特性-函数重载与类型检查
- C++函数的高级特性-函数重载
- C++函数的高级特性-函数重载
- C++函数的高级特性-函数重载
- C++函数的高级特性-函数重载
- C++函数的高级特性-函数重载
- C++函数的高级特性-函数重载
- c++之函数特性 重载 内联 函数默认值
- 显式重载虚函数(C++11特性)
- 关于 浏览器特性检测管理器, 及 浏览器特性函数重载器
- 方法重载特性
- 第八章 C++函数的高级特性(8.1 函数重载的概念)
- 第八章 C++函数的高级特性(8.2 成员函数的重载、覆盖与隐藏)
- C++语言特性:构造函数,析构函数,虚函数,内联函数,静态成员函数,重载,覆盖,隐藏
- 重载之函数重载
- 笔记1
- 迅雷调用potplayer
- Tomcat7优化
- 基于R的数据挖掘的包
- Git一创建时没有Git init here!
- 函数重载特性
- 不要和一种编程语言厮守终生:为工作正确选择
- Android 自定义控件/带资源的控件打包jar问题
- Spark 入门经典 WordCount 单机/伪分布式
- 20160226.CCPP体系详解(0036天)
- 22.推送多条只显示一条问题
- Dubbo基础篇_03_简单的Dubbo提供者provider与消费者consumer
- 坑爹的prototype
- 启动调试时总是提示此项目已经过期的解决方案