MOOC清华《面向对象程序设计》第4章:函数重写实验
2017-08-25 19:16
295 查看
#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 基类名::函数名; 语句后就恢复了基类同名函数在派生类继承中的权限。
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 基类名::函数名; 语句后就恢复了基类同名函数在派生类继承中的权限。
相关文章推荐
- MOOC清华《面向对象程序设计》第4章:虚函数实验
- MOOC清华《面向对象程序设计》第4章:函数模板的特化实验
- MOOC清华《面向对象程序设计》第4章:函数模板实验
- MOOC清华《面向对象程序设计》第4章:向上映射实验
- MOOC清华《面向对象程序设计》第4章:delete禁止自动类型转换实验
- MOOC清华《面向对象程序设计》第4章:虚析构函数实验
- MOOC清华《面向对象程序设计》第4章:类模板的特化实验
- MOOC清华《面向对象程序设计》第2章:函数重载实验
- MOOC清华《面向对象程序设计》第4章:基类与派生类的继承权限实验
- MOOC清华《面向对象程序设计》第7章:统计考试及格率v5.3(采用函数对象)
- MOOC清华《面向对象程序设计》第3章:流运算符重载实验
- MOOC清华《面向对象程序设计》第4章:explicit禁止自动类型转换实验
- MOOC清华《面向对象程序设计》第2章:函数参数的缺省值实验
- MOOC清华《面向对象程序设计》第8章:悬挂指针实验
- MOOC清华《面向对象程序设计》第3章:const常量成员实验
- MOOC清华《面向对象程序设计》第2章:类class的综合实验
- MOOC清华《面向对象程序设计》第4章:强制类型转换实验
- MOOC清华《面向对象程序设计》第8章:装饰模式实验
- MOOC清华《面向对象程序设计》第4章:继承基类构造函数实验
- MOOC清华《面向对象程序设计》第2章:私有成员与公有成员不可同名实验