C 中基类和派生类能否构成一个重载函数集

上传人:油条 文档编号:12797248 上传时间:2017-09-04 格式:PDF 页数:2 大小:82.56KB
返回 下载 相关 举报
C  中基类和派生类能否构成一个重载函数集_第1页
第1页 / 共2页
C  中基类和派生类能否构成一个重载函数集_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《C 中基类和派生类能否构成一个重载函数集》由会员分享,可在线阅读,更多相关《C 中基类和派生类能否构成一个重载函数集(2页珍藏版)》请在金锄头文库上搜索。

1、问题:在C+中基类和派生类的成员函数能否构成一个重载函数集?先看下面代码? #pragma once #include using namespace std; class Base public: void f(int x) cout using namespace std; class Base public: void f(int x) cout f(int x) endl; void f(double x) cout f(double x) endl; ; class Derived : public Base public: Base:f; /将Base:f引入到作用域Derived

2、,且访问权限为public / using Base:f; 或者我们可以用using语句将Base:f引入到作用域Derived,且访问权限为public void f(void) cout f(void) endl; ; void main() Base a; a.f(1); a.f(1.0); Derived b; b.f(1); 这时编译通过。请同学们注意在课堂上讲过Base:f;可以恢复继承的基类成员的访问权限,它的语义实际上是:将基类成员引入到派生类的作用域,而且访问权限和在基类里的一样。另外可以用using语句达到同样的效果。 当然,要解决上面的问题还有个办法,就是这样访问基类的v

3、oid f(double x) b.Base:f(1); 但这样的写法让人感觉不舒服,通过对象b调用 void f(void)可以写b.f();,但要调用void f(int x) 却必须写成b.Base:f(1);。这样写失去了重载的意义。重载的意义是使用同一个函数调用表达式,达到静态的多态性。 另外,在JAVA里上述问题不存在。请看代码: class A public void f(int i) public void f(double d) class B extends A public void f() public static void main(String args) new B().f(1);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号