c++中的隐藏及重载、重写与隐藏的区别
c/c++中的隐藏 举个栗子
class A
{
public : void fun1(int a, int b)
{
cout<<"abcd"<<endl;
}
};
class B : public A
{
public : void fun1(int a)
{
cout<<"abcdefg"<<endl;
}
};
int main ()
{
B b;
b.fun1(3,4); //会出错,因为子类与父类之间发生了同名函数隐藏,隐藏了父类的函数
return 0;
}
重载:首先它是发生在同一个类中,函数名字相同,返回值、函数参数可以不同
重写:在基类和派生类中,函数形式完全一样,函数名、返回值、参数都相同,加上virtual后是实现多态的一个条件。
隐藏:基类和派生类之间,只是函数名相同,如果用派生类的对象调用基类的重名函数(只是重名,函数参数可以不同,子类没有这个函数但是父类有的,子类对象想调用父类的那个函数),将会发生错误,编译不通过,原因是发生了函数隐藏,子类的函数隐藏了父类函数。如果想调用 需要使用:: 例如 b1.A::fun1(1,2,3);
c++中的隐藏及重载、重写与隐藏的区别的更多相关文章
- Django用户认证模块中继承AbstractUser与AbstractBaseUser重写User表的区别
AbstractUser和AbstractBaseUser看起来十分相似,如果你不熟悉djiango的auth重写User,那你很容易弄错,导致一堆bug. 我们查看AbstractUser的源码得知 ...
- Java中实现某方法和重写某方法的区别
实现(implements) 实现一个方法,在实现某个接口,或者是继承某个抽象类,在接口和在抽象类中定义的方法,本身是没有实现的,也就是没有方法体,你在当前类中就需要去实现这个方法. 重写(overl ...
- c++中的隐藏、重载、覆盖(重写)
转自c++中的隐藏.重载.覆盖(重写) 1 重载与覆盖 成员函数被重载的特征: (1)相同的范围(在同一个类中): (2)函数名字相同: (3)参数不同: (4)virtual关键字可有可无. 覆盖是 ...
- 重载(overload),覆盖/重写(override),隐藏(hide)
写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖/重写(override),隐藏(hide).在早期的C++书籍中,常常把重载(overload)和覆盖(override)搞错 ...
- C++基础--重载、重写、隐藏
1.重载(overload) 重载的概念是在同一作用域内,函数名相同,函数输入参数个数.数据类型不同,但是不能是函数名.参数个数.数据类型完全相同但返回值不同的情况.最直接的例子是常见的构造函数重载, ...
- c++继承关系中成员函数的重载、重写、重定义之间的区别
1.Override.Overload.Redefine Overload 重载只能发生在类内部,不能发生在子类和父类的继承中.具体来说,如果子类中有父类同名.同返回值类型,但是不同参数列表,这两个在 ...
- 重写UITableViewCell子类中属性的setter方法来实现隐藏或显示该cell中的某些控件
重写UITableViewCell子类中属性的setter方法来实现隐藏或显示该cell中的某些控件 为什么会需要这样子的一种方法来实现隐藏或者显示一个cell中的某些控件呢? 其实,隐藏cell中某 ...
- makefile中重载与取消隐藏规则示例
学习<跟我一起写Makefile-陈皓>后一直不懂,如何重载或取消隐藏规则 为了博客版面整洁,何为隐藏规则,Makefile基本规则编写等基础支持请自行百度. 需要声明的是:这些知识可能在 ...
- C#中子类对基类方法的继承、重写和隐藏
提起子类.基类和方法继承这些概念,肯定大家都非常熟悉.毕竟,作为一门支持OOP的语言,掌握子类.基类是学习C#的基础.不过,这些概念虽然简单,但是也有一些初学者可能会遇到的坑,我们一起看看吧. 子 ...
随机推荐
- 前端之promise
Promise是一个非常重要的方法,它可以是一些异步操作最后归为有序的进行. url: from django.contrib import admin from django.urls import ...
- (转存)面向切面编程(AOP)的理解
面向切面编程(AOP)的理解 标签: aop编程 2010-06-14 20:17 45894人阅读 评论(11) 收藏 举报 分类: Spring(9) 在传统的编写业务逻辑处理代码时,我们通常 ...
- ACM Dance Recital(dfs+剪枝)
The Production Manager of a dance company has been tasked with determining the cost for the seasonal ...
- Java 目标
Java 技术 其次掌握的技能树主要有三个方面:第一个是基础,比如对集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射,等有深入了解,最好是看过源码了解底层的设计.比如一般面试都会问Co ...
- BeanUtils.copyProperties不能copy复杂对象List的解决方式
需要注意的就是把List拆分,遍历add,然后把list设置到返回对象中 package test.test; import java.util.ArrayList; import java.util ...
- Windows10系统下安装python2和python3双版本
Windows10系统下安装Python3的步骤已经演示过(详见:https://www.cnblogs.com/schut/p/8399195.html),此处不再赘述Python的下载,主要介绍在 ...
- centos7 安装 openvswitch
1.安装依赖包: yum -y install make gcc openssl-devel autoconf automake rpm-build redhat-rpm-config yum - ...
- class.__subclasses__()
[class.__subclasses__()] Each class keeps a list of weak references to its immediate subclasses. Thi ...
- Excel VBA入门(九)操作工作薄
虽然我前面讲过,在VBA中操作工作薄并不是件明智的事,但有些时候,还是避免不了要这么做.绝大多数情况下,我们要做的是获取到某个工作薄对象,并以此来获得其中的工作表对象,然后再对工作表中的数据进行处理. ...
- mac下搭建appium
1.安装java 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html ...