函数重载:

必须在同一个类中进行;

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

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

函数重写与重定义:

重写:

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

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

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

代码分析:

 #include<iostream>
using namespace std; class Parent {
public:
virtual void fuc()
{
cout << "parent 无参fuc...\n";
}
virtual void fuc(int i)
{
cout << "parent 1参fuc...\n";
}
virtual void fuc(int i,int j)
{
cout << "parent 2参fuc...\n";
} };
class Child1 : public Parent
{
public:
virtual void fuc(int i, int j)
{
cout << "child 2参fuc...\n";
}
virtual void fuc(int i, int j,int k)
{
cout << "child 3参fuc...\n";
}
}; int main()
{
Child1 c1;
c1.fuc();
return ;
}

报错如下:

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

c1.Parent::fuc();

最新文章

  1. wex5 实战 省市县三级联动与地址薄同步
  2. 深入浅出 - Android系统移植与平台开发(五)- 定制手机模拟器ROM
  3. jQuery判断对象是否是函数
  4. Python获取目录、文件的注意事项
  5. ClassLoader类加载机制
  6. 安装SQL Server驱动到Maven仓库[转]
  7. javaweb学习总结二十六(response对象的用法二 下载文件)
  8. oracle 数据库 if...elsif...语句
  9. C#中的Explicit和Implicit
  10. S/4 HANA中的ACDOCT和FAGLFLEXT
  11. 论文阅读笔记(一)FCN
  12. Sublime Text3—Project(项目管理)
  13. GitLab查询当前版本
  14. C++——堆、栈、静态存储区
  15. RBTree和AVL
  16. 【SR】正则化
  17. Flask的请求与响应
  18. UOJ #55 &amp; 洛谷 P3920 紫荆花之恋 —— 动态点分治+替罪羊树
  19. 使用while 打印10~1,1~10
  20. 【Node.js】初识Node.js

热门文章

  1. 更换已存在项目的svn的地址
  2. 自己动手写处理器之第二阶段(2)——Verilog HDL简单介绍
  3. loadrunner中log的使用初步总结
  4. Android利用温度传感器实现带动画效果的电子温度计
  5. 【微信小程序】:评论、回复和删除功能 -- 2017/7/14
  6. HDUOJ----Safecracker(1015)
  7. 机器学习中的 ground truth
  8. PHP API中,MYSQL与MYSQLI的持久连接区别
  9. AsyncTask与ProgressDialog使用笔记(安卓在背景运行耗时任务)
  10. 在程序开发中怎样写SQL语句可以提高数据库的性能