/*

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

*重载:

*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. 更改Apache的首页

    本机Apache的安装过程请见: Apache的首页是由/usr/local/httpd/conf/httpd.conf文件的DocumentRoot决定的. ...## DocumentRoot: ...

  2. 如何自定义CollectionView中每个元素的大小和间距

    问题: 让每个元素大小变为104 x 104 Step 1: 在你的视图控制器头文件中实现UICollectionViewFlowLayout协议 eg: @interface XXViewContr ...

  3. SqlServer 之 用 IP 地址连接数据库报错" 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误 "

    问题描述:       在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (p ...

  4. URLRewriter.dll的使用

    http://www.cnblogs.com/Jaylong/archive/2011/10/17/url.html 微软URLRewriter.dll的url重写的简单使用 先添加引用URLRewr ...

  5. 微信小程序 - 文字收缩与展开

    wxml <view class='containers'> <text class="content {{ellipsis?'ellipsis':'unellipsis' ...

  6. shell中如何取括号中的字符

    1. 使用grep(结果带括号,不知道有没有办法仅把括号中的内容匹配出来) $a='abc[edg]adfirpqu' $echo $a|grep -o '\[.*\]' #中括号的处理需要转义 [e ...

  7. PHP MySQL 连接数据库

    PHP连接MySQL的小实例 <?php  /*时间:2014-09-14  *作者:葛崇  *功能:PHP连接MySQL小实例  * */ /* SQL 脚本.直接贴到命令行运行. DROP  ...

  8. Android遍历获取指定目录的文件(转)

    // 获取当前目录下所有的mp4文件 public static Vector<String> GetVideoFileName(String fileAbsolutePath) { Ve ...

  9. Job for vsftpd.service failed because the control process exited with error code

    # systemctl start vsftpd.serviceJob for vsftpd.service failed because the control process exited wit ...

  10. Linux 系统访问控制列表ACL

    常见的文件系统的一般权限(rwx).特殊权限(SUID,SGID,STICK).隐藏权限(chattr)其实有个共性——权限是针对某一类用户设置的.而如果希望对某个指定的用户进行单独的权限控制,那么就 ...