/*

*成员函数的重载,覆盖,隐藏

*重载:

*1.同样的范围(在同一个类中)

*2.函数名同样

*3.參数不同

*4.virtualkeyword可有可无

*覆盖是指派生类覆盖基类的函数,特征是:

*1.不同的范围(分别位于基类与派生类中)

*2.函数名同样

*3.參数同样

*4.基类函数必须有virtualkeyword

*/

#include<iostream>
using namespace std;
class B
{
public:
void f(int x)
{cout<<"B::f(int)"<<endl;}
void f(float x)
{cout<<"B::f(float)"<<endl;}
virtual void g(void)
{cout<<"B::g(void)"<<endl;}
};
class D : public B
{
public:
virtual void g(void)
{cout<<"D::g(void)"<<endl;}
};
int main()
{
D d;
B *pb = &d;
pb->f(3.14f);//B::f(float)
pb->f(42);//B::f(int)
pb->g();//D::g(void)
return 0;
}

/*

*隐藏:

*1.派生类的函数与基类函数同名,但參数不同。此时不论

*  有无virtualkeyword基类函数将被隐藏

*2.派生类函数与基类函数同名同參。但基类没有virtual

*  keyword。基类函数将被隐藏

*/

#include<iostream>
using namespace std;
class B
{
public:
virtual void f(float x)
{cout<<"B::f(float)"<<endl;}
void g(float x)
{cout<<"B::g(float)"<<endl;}
void h(float x)
{cout<<"B::h(float)"<<endl;}
}; class D : public B
{
public:
virtual void f(float x)
{cout<<"D::f(float)"<<endl;}
void g(float x)
{cout<<"D::g(float)"<<endl;}
void h(float x)
{cout<<"D::h(float)"<<endl;}
}; int main()
{
D d;
B *pb = &d;
D *pd = &d; pb->f(3.14f);//D::f(float)//覆盖
pd->f(3.14f);//D::f(float) pb->g(3.14f);//B::g(float)
pd->g(3.14f);//D::g(float)//隐藏 pb->h(3.14f);//B::h(float)
pd->h(3.14f);//D::h(float)//隐藏
return 0;
}

成员函数的重载&amp;&amp;隐藏&amp;&amp;覆盖的更多相关文章

  1. C++类成员函数的重载、覆盖和隐藏区别?

    C++类成员函数的重载.覆盖和隐藏区别? a.成员函数被重载的特征:(1)相同的范围(在同一个类中):(2)函数名字相同:(3)参数不同:(4)virtual 关键字可有可无.b.覆盖是指派生类函数覆 ...

  2. C++类成员函数的 重载、覆盖和隐藏区别

    重载:成员函数被重载的特征: (1)相同的范围(在同一个类中): (2)函数名字相同: (3)参数不同: (4)virtual 关键字可有可无. #include <iostream> u ...

  3. C++:类成员函数的重载、覆盖和隐藏区别?

    #include <iostream> class A { public: void func() { std::cout << "Hello" <& ...

  4. 【非原创】C++类成员函数的重载、覆盖和隐藏

    链接:https://www.nowcoder.com/questionTerminal/266d3a6d4f1b436aabf1eff3156fed95来源:牛客网 题目:类成员函数的重载.覆盖和隐 ...

  5. 类成员函数的重载、覆盖和隐藏区别 (C++)(转)

    类成员函数的重载.覆盖和隐藏区别 (C++)   这是本人第一次写博客,主要是想记录自己的学习过程.心得体会,一是可以方便以后回顾相关知识,二是可以与大家相互学习交流. 关于C++中类成员函数的重载. ...

  6. 类成员函数的重载、覆盖和隐藏区别 (C++)

    这是本人第一次写博客,主要是想记录自己的学习过程.心得体会,一是可以方便以后回顾相关知识,二是可以与大家相互学习交流. 关于C++中类成员函数的重载.覆盖和隐藏区别,第一次看到这个问题是在准备找工作的 ...

  7. c++类成员函数的重载和覆盖有什么区别

    1.成员函数被重载的特征: (1)相同的范围(在同一个类中): (2)函数名字相同: (3)参数不同: (4)virtual 关键字可有可无. 2.覆盖是指派生类函数覆盖基类函数,特征是: (1)不同 ...

  8. c++继承关系中成员函数的重载、重写、重定义之间的区别

    1.Override.Overload.Redefine Overload 重载只能发生在类内部,不能发生在子类和父类的继承中.具体来说,如果子类中有父类同名.同返回值类型,但是不同参数列表,这两个在 ...

  9. 类的const和非const成员函数的重载

    我们从一个例子说起,来看上一篇文章中的String类, 我们为它提供一个下标操作符([ ])以读写指定位置的字符(char). 只要了解过C++的操作符重载的语法,很快就可以写出下面这个[]操作符重载 ...

随机推荐

  1. 批量合并GDB

    在实际操作中,经常对数据库文件进行合并.裁切等.如果遇到gdb比较多,要素层比较多,而且还存在数据集.虽然ArcGIS中的批量处理的功能,但填写参数过程也比较麻烦,如果一次性处理过多,程序容易停止工作 ...

  2. Android Studio中安装Genymotion模拟器

    Genymotion的安装: Genymotion无疑是目前最快最好用的模拟器.官网下载地址:https://www.genymotion.com/ 进到官网却找不到免费下载地址了,都需要money, ...

  3. 创建线程安全的单例(ARC或 非ARC)

    一:创建 宏 文件 SynthesizeSingleton.h SynthesizeSingleton.h #if __has_feature(objc_arc) // ARC Version #de ...

  4. Swift高速入门之函数

    函数 看一个函数的样例: func addNumbers( let a:Int,let b:Int)->Int{ return a+b; } 实现两个数相加.函数必须以func开头,后面是函数名 ...

  5. 使用fiddler来抓包

    使用fiddler来抓包 Sniffer,wireshark,WinNetCap.WinSock Expert,SpyNet 都是当前流行的抓包工具 需要先做一些简单的准备工作: 一台带有无线网卡的P ...

  6. 基于vue 的 UI框架 -- Mint UI

    网址: http://mint-ui.github.io/docs/#!/zh-cn 官网: http://mint-ui.github.io/#!/zh-cn vue2.0实例: http://bl ...

  7. 解决 /dev/mapper/* 100%

    1.查看大文件位置du -sh /* | sort -nr 2.分析,处理文件

  8. 解决this web application instance has been stopped already

    重启tomcat的时候出错 Illegal access: this web application instance has been stopped already.  Could not loa ...

  9. MySQL事务控制语句(学习笔记)

    MySQL事务控制语句(学习笔记) MySQL事务控制语句         在mysql命令行的默认下,事务都是自动提交的,sql语句提交后马上会执行commit操作.因此开启一个事务必须使用begi ...

  10. updatepanel 和 visibility 有一定冲突

    如果出现异常可以将 visibility换成 display