成员函数的重载&&隐藏&&覆盖
/*
*成员函数的重载,覆盖,隐藏
*重载:
*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;
}
成员函数的重载&&隐藏&&覆盖的更多相关文章
- C++类成员函数的重载、覆盖和隐藏区别?
C++类成员函数的重载.覆盖和隐藏区别? a.成员函数被重载的特征:(1)相同的范围(在同一个类中):(2)函数名字相同:(3)参数不同:(4)virtual 关键字可有可无.b.覆盖是指派生类函数覆 ...
- C++类成员函数的 重载、覆盖和隐藏区别
重载:成员函数被重载的特征: (1)相同的范围(在同一个类中): (2)函数名字相同: (3)参数不同: (4)virtual 关键字可有可无. #include <iostream> u ...
- C++:类成员函数的重载、覆盖和隐藏区别?
#include <iostream> class A { public: void func() { std::cout << "Hello" <& ...
- 【非原创】C++类成员函数的重载、覆盖和隐藏
链接:https://www.nowcoder.com/questionTerminal/266d3a6d4f1b436aabf1eff3156fed95来源:牛客网 题目:类成员函数的重载.覆盖和隐 ...
- 类成员函数的重载、覆盖和隐藏区别 (C++)(转)
类成员函数的重载.覆盖和隐藏区别 (C++) 这是本人第一次写博客,主要是想记录自己的学习过程.心得体会,一是可以方便以后回顾相关知识,二是可以与大家相互学习交流. 关于C++中类成员函数的重载. ...
- 类成员函数的重载、覆盖和隐藏区别 (C++)
这是本人第一次写博客,主要是想记录自己的学习过程.心得体会,一是可以方便以后回顾相关知识,二是可以与大家相互学习交流. 关于C++中类成员函数的重载.覆盖和隐藏区别,第一次看到这个问题是在准备找工作的 ...
- c++类成员函数的重载和覆盖有什么区别
1.成员函数被重载的特征: (1)相同的范围(在同一个类中): (2)函数名字相同: (3)参数不同: (4)virtual 关键字可有可无. 2.覆盖是指派生类函数覆盖基类函数,特征是: (1)不同 ...
- c++继承关系中成员函数的重载、重写、重定义之间的区别
1.Override.Overload.Redefine Overload 重载只能发生在类内部,不能发生在子类和父类的继承中.具体来说,如果子类中有父类同名.同返回值类型,但是不同参数列表,这两个在 ...
- 类的const和非const成员函数的重载
我们从一个例子说起,来看上一篇文章中的String类, 我们为它提供一个下标操作符([ ])以读写指定位置的字符(char). 只要了解过C++的操作符重载的语法,很快就可以写出下面这个[]操作符重载 ...
随机推荐
- Opera Unite如何架设自己的网站
1使用Opera的File Sharing可以共享你的文件 2使用Opera的Stream media可以共享你的视频,有些格式甚至可以直接在浏览器端打开(比如MOV,但是需要安装Quicktime的 ...
- 栅格计算器函数之Con
Con函数是condition(条件)的缩写,其作用 语法是: Con(条件,条件为真执行语句,条件为假执行语句[可选]) 或Con(输入栅格,条件为真执行语句,条件为假执行语句[可选],逻辑表达式) ...
- Activity基本跳转
详细解释:http://blog.csdn.net/xiazdong/article/details/7664757 简单介绍activity的跳转,通过intent实现,详细的注释在代码中.涉及到a ...
- activemq无法启动且后台管理界面进不去的解决办法
从官网下载了一个最新的activemq,目前最新版本是5.14.5 我下载的是windows版本,通过执行%activemq home%/bin/win64/InstallService.bat,可以 ...
- android 实现QQ好友列表
在某些Android开发群里,看到有些新手问怎么实现QQ好友列表,其实网上一搜挺多的.接触Android,也才一年的时间,大部分时间花在工作上(解bug...),界面上开发很少参与.自己维护的系统应用 ...
- Linux用户、组帐号和权限(学习笔记九)
一.用户分类 超级用户:root 普通用户:由超级用户和管理员创建,一般只在自己的目录中有完全的权限 程序用户: 二.用户账号管理 常用命令: useradd:添加用户 userdel:删除用户 pa ...
- HDOJ 4686 Arc of Dream 矩阵高速幂
矩阵高速幂: 依据关系够建矩阵 , 高速幂解决. Arc of Dream Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65535/ ...
- ios开发之公交卡系统的设计与实现
// // main.m // Bus-公交 /* 公交一卡通充值系统.有两种功能选择.第一种投入硬币或者纸币 选择购票,另外一种一卡通充值,充值面额是20,50.100 */ #import < ...
- java Socket 获取本地主机ip
package cn.itcast.net.p1.ip; import java.net.InetAddress;import java.net.UnknownHostException; publi ...
- 微信小程序的零食商城
概述 这是一个微信小程序的商城应用,功能包括了首页.分类.购物车.个人中心.商品列表.商品详情.订单.地址管理等 详细 代码下载:http://www.demodashi.com/demo/10353 ...