首页 > 其他 > 详细

No.2 揭秘继承技术之虚函数(二)

时间:2014-03-22 18:59:42      阅读:437      评论:0      收藏:0      [点我收藏+]

修改方法的特征

1.修改方法的返回值类型

  如果原始方法的返回值类型是某个类的指针或引用,重写的方法可以将返回值改变为子类的指针或引用。这个叫协变返回。(我的理解是:子类“是一个“父类)

  不能将返回值类型修改为完全不相干的类型。

2.如果在子类中使用父类虚方法的名称,但参数与父类中同名方法不同,那么这不是对父类方法的重写而是创建了一个新方法。原始的方法将被隐藏,子类无法调用。

   可用using关键字显式地在子类中包含父类方法。

 

静态方法无法被继承。

 

当指定名称及一组参数重写某个方法时,编译器将隐式地隐藏父类中所有同名方法的其他实例。

 

C++中根据描述对象的表达式绑定默认参数,而不是根据实际对象类型绑定参数。

方法会继承而默认参数不会被“继承”:使用指向子类对象的父类指针调用的是子类重写的方法,而默认参数却是父类中的默认参数。

bubuko.com,布布扣
 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 
 6 class Super 
 7 {
 8 public:
 9     Super(){}
10     virtual void get(int i = 1){cout<<"There is Super. i="<<i;}
11     ~Super(){}
12 };
13 
14 class Sub :public Super
15 {
16 public:
17     Sub(){}
18     void get(int i = 2){cout<<"There is Sub. i="<<i;}
19      ~Sub(){}
20 };
21 
22 int main()
23 {
24     Super* ptr;
25     ptr = new Sub;
26     ptr->get();
27     return 0;
28 }
bubuko.com,布布扣

运行结果:bubuko.com,布布扣

No.2 揭秘继承技术之虚函数(二),布布扣,bubuko.com

No.2 揭秘继承技术之虚函数(二)

原文:http://www.cnblogs.com/baiyideng/p/3617505.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!