Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1739270
  • 博文数量: 263
  • 博客积分: 1218
  • 博客等级: 少尉
  • 技术积分: 2862
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-19 02:33
文章分类

全部博文(263)

文章存档

2020年(12)

2019年(2)

2018年(10)

2016年(1)

2015年(20)

2014年(115)

2013年(46)

2012年(37)

2011年(20)

分类: C/C++

2014-06-26 23:05:11


1. 成员函数被重载的条件有: 
1) 相同的范围(在同一个类中);//同一层次 2) 函数名字相同; 3) 参数不同; 
4) virtual关键字可有可无。 注意:重载不关心函数的返回值类型 
① double calculate(double); 
② double calculate(double,double); 
③ double calculate(double, int); 
④ double calculate(int, double); 
⑤ double calculate(int); 
⑥ float calculate(float); 
⑦ float calculate(double); 
 
2. 覆盖的条件有: 
子类函数名、参数列、返回值类型必须同父类中的相对应被覆盖的函数严格一致 
1) 不同的范围(分别位于派生类与基类);//不同层次,子内父外 
2) 函数名字相同; 
3) 参数相同;  
4)返回值类型相同;  
5) 基类函数必须有virtual关键字。 



注:派生类虚函数覆盖基类虚函数+隐藏基类中所有其他重载函数 
 覆盖总包含了隐藏!!(满足前两点就能实现隐藏,再加后三点实现覆盖)  
 
e.g., P264    8_4.cpp 

3. 隐藏,非严格一致的覆盖。 
指派生类的函数屏蔽了与其同名的基类函数,条件如下: 
1) 不同的范围(分别位于派生类与基类);//不同层次,子内父外 
2) 函数名字相同; 
//以下三条有一条不符合者,皆为隐藏!  
3) 参数相同;  
4)返回值类型相同;  
5) 基类函数必须有virtual关键字。  
阻止了编译器继续向上查找函数的定义 
e.g., p219, 7_4.cpp 隐藏非覆盖!父类指针作用域,相当于 基类::display();  
p228, 7_7.cpp 

转: 


阅读(677) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~