重载、重写(覆盖)、隐藏

1C++函数重写、覆盖override

特征:

1) 不同的范围(分别位于派生类与基类);

2) 函数名字相同;

3) 参数相同;

4) 基类函数必须有virtual关键字。

 

1)被重写的函数不能是static的。必须是virtual的,或者是override(即函数在最原始的基类中被声明为virtualc++中没有override)

2
)重写函数必须有相同的类型,名称和参数列表

3)重写函数的访问修饰符可以不同。尽管virtualprivate的,派生类中重写改写为public,protected也是可以的(这点与C#完全不同)

2C++函数重载overload

特征:

成员函数被重载的特征有:

1) 相同的范围(在同一个类中);

2) 函数名字相同;

3) 参数不同;

4) virtual关键字可有可无

 

1)直观的理解,重载就是一个名称相同的函数有不同版本(参数列表不同:参数类型,顺序)。

2)构成重载函数集的函数必须在同一个域。例如,试图在基类和派生类中的同名函数集中构成一个重载集,将引发错误(函数调用时,编译错误),事实上,派生类中的新函数版本隐藏了基类中定义的函数(隐藏在C++很少提及,但存在)

 

3C++函数隐藏hide

特征:

1) 不同的范围(分别位于派生类与基类);

2) 函数名字相同;

3) 参数相同;

4) 基类函数没有virtual关键字。

      5)同名不同参不管有无virtual

小结:什么是隐藏情况?

1,同名同参无virtual(指父类和子类中的子方同名同参无virtual)都隐藏。

2,同名不同参不管有无virtual(指父类和子类中的子方同名不同参不管有无virtual)都隐藏。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值