C++中重载 覆盖 隐藏的区别
2017-02-22 14:45
211 查看
重载:
重载特性:
(1)相同的范围
(2)函数名字相同
(3)参数不同
(4)virtual关键字可有可无
class A
{
public:
void Func(int a, int b);
void Func(int a);
};
这就是对函数进行了重载。
注:对于全局函数也是可以重载的,第一个条件中只要范围相同就可以。
覆盖
覆盖的特性:
(1)不同的范围(分别位于派生类和基类)
(2)函数名字相同
(3)参数相同
(4)基类函数必须有virtual关键字
class A
{
public:
virtual int add(int x, int y);
}
class B : public A
{
public:
virtual int add(int x, int y);
}
这里就是B类中的add函数覆盖了A类中的add函数
隐藏
(1)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字,此时基类的函数被隐藏。
(2)如果派生类的函数与基类的函数同名,但是参数不同,此时,无论有无virtual关键字,基类的函数将被隐藏
重载特性:
(1)相同的范围
(2)函数名字相同
(3)参数不同
(4)virtual关键字可有可无
class A
{
public:
void Func(int a, int b);
void Func(int a);
};
这就是对函数进行了重载。
注:对于全局函数也是可以重载的,第一个条件中只要范围相同就可以。
覆盖
覆盖的特性:
(1)不同的范围(分别位于派生类和基类)
(2)函数名字相同
(3)参数相同
(4)基类函数必须有virtual关键字
class A
{
public:
virtual int add(int x, int y);
}
class B : public A
{
public:
virtual int add(int x, int y);
}
这里就是B类中的add函数覆盖了A类中的add函数
隐藏
(1)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字,此时基类的函数被隐藏。
(2)如果派生类的函数与基类的函数同名,但是参数不同,此时,无论有无virtual关键字,基类的函数将被隐藏
相关文章推荐
- C++成员函数重载、覆盖和隐藏的区别
- c++中多态函数以及函数重载,覆盖,遮蔽(隐藏)的区别
- C++多态及重载(overload),覆盖(override),隐藏(hide)的区别
- c++成员函数的重载、覆盖、隐藏区别
- C++中重定义、重写、重载的区别以及隐藏与覆盖的访问
- 转载:c++重载、覆盖、隐藏——理不清的区别
- c++中多态函数以及函数重载,覆盖,遮蔽(隐藏)的区别
- c++中重载、覆盖和隐藏概念的区别
- c++重载、覆盖、隐藏的区别和执行方式
- C++ 重载 覆盖 隐藏的区别和执行方式
- C++中覆盖、重载和隐藏的区别
- (转自)C++覆盖、重载和隐藏的区别
- 关于C#和C++的重载(Overload)、隐藏(Hide)、覆盖(Override)几个区别比较和得出的疑问
- ZT C++ 重载、覆盖和隐藏的区别
- [转]C++中重载(overload)、覆盖(override)、隐藏(hide)的区别
- C++覆盖、重载和隐藏的区别
- C++ 覆盖、重载、隐藏三个区别
- c++ 重载 覆盖 隐藏的区别和执行方式
- C++中覆盖、重载、隐藏的区别(写给菜鸟们)
- C++中继承技术引发的问题:重载(overload),覆盖(override)和隐藏(hide)的区别