/*

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

*重载:

*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. CSS种让border-bottom大道text-decoration一样的效果,甚至要比它的效果更理想一些!

    <p style="width:300px;line-height: 30px;margin:0 auto;text-indent: 24pt;word-break:break-all ...

  2. (回溯法)和为n的所有不增正整数和式分解算法

    题目: 利用递归算法输出正整数和为n的所有不增的正整数和式.例如当n=5时,不增的和式如下: 5=5 5=4+1 5=3+2 5=3+1+1 5=2+2+1 5=2+1+1+1 5=1+1+1+1+1 ...

  3. 免费的HTML模板引导 - lonely

    ​在线演示 本地下载 今天和大家分享另一款模板-Lonely.它可以被用在一些个人或者类似简单一些的网站上,动画效果的滚动非常特别!

  4. IOS学习笔记45--UITableView性能优化

    说实话,面试的时候已经被问到几次这个问题,然后就搜索了一下,看到了这篇优化文章,感觉不错,转来日后作为一种UITableView优化的方法. 使用不透明视图.      不透明的视图可以极大地提高渲染 ...

  5. Linux软件安装方法

    常用的两种软件安装方法: 1.RPM软件安装 rpm -qi 软件名 查询 rpm -ivh *.rpm 安装 rpm -e 软件名 卸载 系统自带的一些rpm包在系统镜像的Server文件夹里,需要 ...

  6. MySQL auto_increment_increment 和 auto_increment_offset

    参考这一篇文章:(不过我对这一篇文章有异议) http://blog.csdn.net/leshami/article/details/39779509 1:搭建测试环境 create table t ...

  7. 有间距的表格布局 table布局

    1.先看有间距的布局效果: 2.少说多做,直接看代码(代码中有注释) <!DOCTYPE html> <html lang="zh"> <head&g ...

  8. python2.7中minetypes.py的UnicodeDecodeError

    问题: python错误提示: UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 1: ordinal not ...

  9. 细说HTML元素的隐藏和显示

    CSS文档对HTML的显示和隐藏有2个属性可供选择: 1.display 2.visiblity 这2个有什么区别呢? display: display版本:CSS1/CSS2 兼容性:IE4+ NS ...

  10. python之模块csv之 读取CSV文件(reader和DictReader2个方法)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #读取CSV文件(reader和DictReader2个方法) import csv #csv文件,是一种常用 ...