Overload、Override和隐藏的区别
来源:互联网 发布:unity3d室内漫游教程 编辑:程序博客网 时间:2024/05/08 15:25
Overload:顾名思义,就是Over(重新)——load(加载),所以中文名称是重载。它可以表现类的多态性,可以是函数里面可以有相同的函数名但是参数名、返回值、类型不能相同;或者说可以改变参数、类型、返回值但是函数名字依然不变。
Override:就是ride(重写)的意思,在子类继承父类的时候子类中可以定义某方法与其父类有相同的名称和参数,当子类在调用这一函数时自动调用子类的方法,而父类相当于被覆盖(重写)了。
方法的重写Overriding和重载Overloading是多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
1. overload:
- #include <iostream>
- using namespace std;
- void print(int x)
- {
- cout << "int C++" << endl;
- }
- void print(char c)
- {
- cout << "char C++" << endl;
- }
- int main()
- {
- int n = 1;
- char ch = 'a';
- print(n);
- print(ch);
- return 0;
- }
int C++
char C++
2. 隐藏:
- #include <iostream>
- using namespace std;
- class A
- {
- public:
- void print(int x)
- {
- cout << "int C++" << endl;
- }
- };
- class B : public A
- {
- public:
- void print(int x)
- {
- cout << "char C++" << endl;
- }
- };
- int main()
- {
- int n = 1;
- char ch = 'A';
- A a;
- a.print(n);
- B b;
- b.print(ch);
- return 0;
- }
结果为:
int C++
char C++
下面再看一个隐藏的例子(千万要注意,下面这个程序并不是override):
- #include <iostream>
- using namespace std;
- class A
- {
- public:
- virtual void print(int x)
- {
- cout << "int C++" << endl;
- }
- };
- class B : public A
- {
- public:
- virtual void print(char x)
- {
- cout << "char C++" << endl;
- }
- };
- int main()
- {
- int n = 1;
- char ch = 'A';
- A a, *p;
- p = &a;
- p->print(n);
- B b;
- p = &b;
- p->print(ch);
- b.print(n);
b.print(ch); - return 0;
- }
int C++
int C++
char C++
char C++
3. override
- #include <iostream>
- using namespace std;
- class A
- {
- public:
- virtual void print(int x)
- {
- cout << "int C++" << endl;
- }
- };
- class B : public A
- {
- public:
- virtual void print(int x)
- {
- cout << "char C++" << endl;
- }
- };
- int main()
- {
- int n = 1;
- char ch = 'A';
- A a, *p;
- p = &a;
- p->print(n);
- B b;
- p = &b;
- p->print(ch);
- return 0;
- }
int C++
char C++
0 0
- Overload、Override和隐藏的区别
- 重载(Overload)、覆写(Override)和隐藏(hide)的区别
- overload和override的区别
- Overload和Override的区别
- Overload和Override的区别
- Overload和Override的区别
- Overload和Override的区别
- overload和override的区别
- override和overload的区别
- Overload和Override的区别
- overload和override的区别
- overload和override的区别
- overload和override的区别
- overload和override的区别
- overload和override的区别
- Overload和Override的区别
- Override和Overload的区别。
- Overload和Override的区别
- 推广百度的产品
- 第九周上机实践项目 项目1-深复制体验
- jar打包出现java.io.IOException: invalid header field 解决方案
- ubuntu php编译安装 openssl/evp.h: 没有那个文件或目录
- MyBatis 入门(六)--分页查询(2) -插件方式
- Overload、Override和隐藏的区别
- Linux grep命令使用技巧
- 51nod 1442 最大流
- urldecode.php
- 猿欲善其事必先利其IDE-Intellij IDEA
- 笔试总结
- TCP/IP的三次握手与四次挥手详解
- 行人检测
- 深度学习_caffe (3)手写字符库mnist 官网资料