MOOC清华《面向对象程序设计》第4章:函数重写实验

来源:互联网 发布:网页关键词 的优化 编辑:程序博客网 时间:2024/06/05 14:44

#include <iostream>using namespace std;class T{};class B{public:void f(){cout << "B::f()\n";}void f(int i){cout << "B::f(" << i << ")\n";}void f(double d){cout << "B::f(" << d << ")\n";}void f(T){cout << "B::f(T)\n";}};class D1:public B{public:void f(int i){cout << "D1::f(" << i << ")\n";}};int main(){D1 d;d.f(10);d.f(4.9);  //编译警告,会执行自动类型转换//d.f();  //被屏蔽,编译错误 //d.f(T());  //被屏蔽,编译错误 return 0; }


会发现:浮点数4.9自动转换成了整型数4 。这就是函数重写的作用。


#include <iostream>using namespace std;class T{};class B{public:void f(){cout << "B::f()\n";}void f(int i){cout << "B::f(" << i << ")\n";}void f(double d){cout << "B::f(" << d << ")\n";}void f(T){cout << "B::f(T)\n";}};class D1:public B{public:using B::f;void f(int i){cout << "D1::f(" << i << ")\n";}};int main(){D1 d;d.f(10);d.f(4.9);  //编译警告,会执行自动类型转换d.f();  //被屏蔽,编译错误 d.f(T());  //被屏蔽,编译错误 return 0; }



会发现:加上using 基类名::函数名;   语句后就恢复了基类同名函数在派生类继承中的权限。




阅读全文
0 0
原创粉丝点击