C++中重载(overload)、覆盖(override)与隐藏(oversee)
body, table{font-family: 微软雅黑; font-size: 10pt}
table{border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0;}
th{border: 1px solid gray; padding: 4px; background-color: #DDD;}
td{border: 1px solid gray; padding: 4px;}
tr:nth-child(2n){background-color: #f8f8f8;}
重载:
|
class A
{
……
virtual int fun();
void fun(int);
void fun(double,double);
……
};
上述A类定义中的3个fun函数便是重载关系。
|
|
#include<iostream>
using namespace std;
class A
{
public:
virtual void fun1()
{
cout<<"A::fun1()"<<endl;
}
virtual void fun2()
{
cout<<"A::fun2()"<<endl;
}
};
class B:public A
{
public:
void fun1() // B中的fun1覆盖了A中的fun1,同时继承了A中的fun2
{
cout<<"B::fun1()"<<endl;
}
};
class C:public B
{
public:
void fun2()
{
cout<<"C::fun2()"<<endl; //C类继承了B中的fun1,同时重定义覆盖了fun2
}
};
|
int main()
{
A* p = new C;
p->fun1();
p->fun2();
return 0;
}
|
隐藏:
|
#include <iostream>
using namespace std;
class A
{
public:
void fun(int xp) //非虚函数,形参int
{ cout<<xp<<endl; }
};
class B : public A
{
public:
void fun(const char * s) //隐藏,oversee,参数为字符串
//参数相同,但是基类不是虚函数,构成隐藏oversee
{ cout<<s<<endl; }
void fun(int xp) //重载
{ cout<<"B::fun()"<<endl; }
};
|
int main()
{
B b;
b.fun("hello");
b.fun(2); //B 中没有void fun(int) 会报错,基类中的被覆盖
return 0;
}
|
C++中重载(overload)、覆盖(override)与隐藏(oversee)的更多相关文章
- JAVA - 请说明”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?
请说明"static"关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? "static"关键字表明一个成 ...
- 区分重载(overload),覆盖(Override)和隐藏(hide)
重载overload,这个概念是大家熟知的.在同一可访问区内被声名的几个具有不同参数列的(参数的类型.个数.顺序不同)同名函数,程序会根据不同的参数列来确定具体调用哪个函数,这种机制就是重载.重载不关 ...
- 重载(overload)、覆盖(override)和隐藏(hide)
写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖(override),隐藏(hide).在早期的C++书籍中,可能翻译的人不熟悉专业用语(也不能怪他们,他们不是搞计算机编程的, ...
- C++中重载、覆盖与隐藏的区别(转)
本文摘自林锐博士的<高质量C++/C编程指南>. 成员函数的重载.覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防. 1.重载与覆盖 成员函数被重 ...
- java中重载、覆盖和隐藏三者的区别分析
重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型.参数个数.参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg ...
- C++中重载、覆盖和隐藏的区别,以及适用场景
一.重载.覆盖和隐藏的区别 二.适用场景 1.重载: 适用于不同的数据类型都需要使用到的功能函数.以数据相加的函数为例,可以在同一个文件内提供以下的重载函数以支持同样的功能: int add(int, ...
- C# 重载 overload,重写override覆盖
重载overload 派生类和基类的方法同名,其中访问修饰符(public,private,protected,internal,protected internal),返回类型,参数类型,个数,顺序 ...
- C++中的Overload、Override和Overwrite
在C++语言中有一组基础的概念一直都容易混淆:Overload.Override和Overwrite分别表示什么意思?下面把这三个概念整理一下: 1. Overload(重载) 重载的概念最好理解,在 ...
- java中重载和覆盖(又称重写)的区别
初次见到这两个单词并没有什么特别的感觉,但是时间长了,却发现书上一会儿用override,一会儿又用overload,搞得我的迷迷糊.于是就做了个总结,希望能对和我一样对这两个概念模糊不清的网友有一个 ...
- Java中的Overload和Override有什么区别
Overload和Override的区别 1.Overload 定义 Overload是重载的意思.它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后在调用时,虚拟机就会 ...
随机推荐
- 微信小程序不可操作dom节点
//根据历史记录快速搜索 fastSearch:function(e){ console.log(e.currentTarget.id) wx.navigateTo({ url: '../search ...
- H3C S6800交换机 BCM shell命令
H3C S6800交换机 BCM shell命令 http://wgli978.blog.163.com/blog/static/13592877220172315858831/ <H3C> ...
- wdcp环境redis的位置
- github入门书籍总结
目录 第一章 由来 第二章 基本知识简介 第三章 初始操作 3.1 注册账号 3.2 创建仓库 第四章 具体实际操作 4.1 初始化仓库及相关操作 4.2 分支操作 4.3 消除冲突 4.4 压缩历史 ...
- pyhon基础之约束和异常处理:
约束和异常处理:内容梗概: 1. 类的约束 2. 异常处理 3. 自定义异常 4. 日志 1. 类的约束定义:约束是对类的约束常用方法:1. 提取父类.然后在父类中定义好方法.在这个方法中什么都不用干 ...
- org.json.JSONException: JSONObject["shophours"] not found.
没有这个元素造成的.问题代码: value = jsonObject.get(entry).toString(); 分析原因: json中没有这个key,更没有这个key所对应的值 解决办法:判断一下 ...
- 『TensorFlow』生成式网络中的图片预处理
简介 这里的生成式网络是广义的生成式,不仅仅指gan网络,还有风格迁移中的类自编码器网络,以及语义分割中的类自编码器网络,因为遇到次数比较多,所以简单的记录一下. 背景 1.像素和数字 图像处理目标一 ...
- JDBC MVC框架实现用户登录
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写 1.实体entity package com.uplooking. ...
- php 求余
一,异号 1.函数值符号规律(余数的符号) mod(负,正)=正 mod(正,负)=负 结论:两个整数求余时,其值的符号为除数的符号. 2.取值规律 先将两个整数看作是正数,再作除法运算 ①能整除时, ...
- python中lambda的用法
一.lambda函数也叫匿名函数,即,函数没有具体的名称.先来看一个最简单例子: def f(x):return x**2print f(4) Python中使用lambda的话,写成这样 g = l ...