博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++之——重载、重写、重定义
阅读量:7046 次
发布时间:2019-06-28

本文共 1038 字,大约阅读时间需要 3 分钟。

函数重载:

必须在同一个类中进行;

子类无法重载父类的函数,父类同名函数将被子类名称覆盖;

重载是在编译期间根据参数类型和个数决定函数的调用(静态联编)。

函数重写与重定义:

重写:

必须发生在基类和派生类之间,并且父类与子类的函数必须有完全相同的函数原型;

使用virtual关键字声明之后能够产生多态(如果不使用virtual,那叫重定义);

多态是在运行期间根据具体对象的类型决定函数调用(动态联编)。

代码分析:

1 #include
2 using namespace std; 3 4 class Parent { 5 public: 6 virtual void fuc() 7 { 8 cout << "parent 无参fuc...\n"; 9 }10 virtual void fuc(int i)11 {12 cout << "parent 1参fuc...\n";13 }14 virtual void fuc(int i,int j)15 {16 cout << "parent 2参fuc...\n";17 }18 19 };20 class Child1 : public Parent21 {22 public:23 virtual void fuc(int i, int j)24 {25 cout << "child 2参fuc...\n";26 }27 virtual void fuc(int i, int j,int k)28 {29 cout << "child 3参fuc...\n";30 }31 };32 33 34 int main()35 {36 Child1 c1;37 c1.fuc();38 return 0;39 }

报错如下:

 

 前面已经说过,子类无法重载父类函数,并且,子类同名函数会覆盖父类函数,所以,子类c1访问fuc函数,是没有参数的,编译器在child1中找到了fuc函数的名字,就不会去父类再找了,而child1类中没有提供无参数的fuc函数重载,所以报错,要想访问父类的无参fuc函数,可以加域作用符:

 

c1.Parent::fuc();

 

转载地址:http://fvzol.baihongyu.com/

你可能感兴趣的文章
T-SQL函数类别统计
查看>>
centos6.5 升级python2.66 to 2.78
查看>>
unity3d结合轮廓显示,实现完整的框选目标(附Demo代码)
查看>>
netstat
查看>>
Office 365 - SharePoint 2013 Online之添加App开发工具Napa
查看>>
升级R语言
查看>>
Android 百度地图 SDK v3.0.0 (四) 引入离线地图功能
查看>>
FancyBox - 经典的 jQuery Lightbox 插件
查看>>
sqoop:mysql和Hbase/Hive/Hdfs之间相互导入数据
查看>>
透视转换
查看>>
html的下拉框的几个基本使用方法
查看>>
超越Web,Javascript在物联网的应用
查看>>
云适配技术原理
查看>>
为iPhone 6设计自适应布局
查看>>
PHP操作数据库PDO
查看>>
Android colors.xml 颜色列表
查看>>
EF Code First 一对多、多对多关联,如何加载子集合?
查看>>
缓存篇~第六回 Microsoft.Practices.EnterpriseLibrary.Caching实现基于方法签名的数据集缓存...
查看>>
Android ROM 制作教程
查看>>
将一列包含多个ID拆分多行
查看>>