重载重写重定义-易混淆概念-C++编译器处理方式
来源:互联网 发布:政务流程优化再造 编辑:程序博客网 时间:2024/05/16 15:52
1、函数重载
1)必须在同一个类中进行。
2)子类无法重载父类的函数,父类同名函数将被名称覆盖
3)重载是在编译期间根据参数类型和个数决定函数调用
2、函数重写
1)必须发生于父类与子类之间
2)并且父类与子类中的函数必须有完全相同的原型
3)使用virtual声明之后能够产生多态(如果不使用virtual,那叫重定义)
4)多态是在运行期间根据具体对象的类型决定函数调用
demo
#include <iostream>using namespace std;//重写 重载 重定义//重写发生在2个类之间//重载必须在一个类之间//重写分为2类//1 虚函数重写 将发生多态//2 非虚函数重写 (重定义)class Parent{//这个三个函数func都是重载关系public:virtual void func(){cout << "func() do..." << endl;}virtual void func(int i){cout << "func() do..." << i << endl;}virtual void func(int i, int j){cout << "func() do..." << i << " " << j << endl;}virtual void func(int i, int j, int m, int n){cout << "func() do..." << i << " " << j << endl;}void abc(){printf("abc");}protected:private:};class Child : public Parent{public:virtual void func(int i, int j){cout << "func(int i, int j) do..." << i << " " << j << endl;}virtual void func(int i, int j, int k){cout << "func(int i, int j) do.." << endl;}void abc(){printf("child abc");}/*void abc(int a){printf("child abc");}*/protected:private:};//重载重写和重定义int main(){//: error C2661: “Child::func”: 没有重载函数接受 0 个参数Child c1;//c1.func();//子类无法重载父类的函数,父类同名函数将被名称覆盖c1.Parent::func();//1 C++编译器看到func名字,因子类中func名字已经存在了(名称覆盖).所以c++编译器不会去找父类的4个参数的func函数//2 c++编译器只会在子类中,查找func函数,找到了两个func,一个是2个参数的,一个是3个参数的.//3 C++编译器开始报错..... error C2661: “Child::func”: 没有重载函数接受 4 个参数//4 若想调用父类的func,只能加上父类的域名..这样去调用..c1.func(1, 3, 4, 5);//c1.func();//func函数的名字,在子类中发生了名称覆盖;子类的函数的名字,占用了父类的函数的名字的位置//因为子类中已经有了func名字的重载形式。//编译器开始在子类中找func函数。。。。但是没有0个参数的func函数 return 0;}
0 0
- 重载重写重定义-易混淆概念-C++编译器处理方式
- 易混淆的概念--重写、重载、重用、重构
- 重载、重写、重定义
- 重写,重载,重定义
- 重写重载重定义
- 重载重写重定义
- 重写 重载 重定义
- 重载重写重定义
- 重写,重载,重定义
- 重载,重写,重定义
- 重载重写重定义
- 重载、重写与重定义
- 关于重载、重写、重定义
- c++重写、重载、重定义
- 重载重写与重定义
- C++重载,重写,重定义
- C++重载、重写、重定义
- C++重载重写重定义
- Java Google Json (Gson) Serializing Inner classes
- myeclipse工作空间开不开怎么办
- Junit单元测试使用log4j输出日志
- 9. 工作区和暂存区
- saltstack
- 重载重写重定义-易混淆概念-C++编译器处理方式
- 数据库面试常见题
- 文本分类,数据挖掘和机器学习
- 频率选择性衰落
- My orcal load 2
- 自定义属性format详解
- 浙江大学PAT_甲级_1023. Have Fun with Numbers (20)
- gdb/cgdb调试库函数
- GET POST 区别详解(乱码解释)