网站首页 > 基础教程 正文
然后我们再来看,如果继承的过程中,子类中,也有一个和父类中同名的,变量,或者函数怎么办?
.
我们先去写个Base类,然后base类中去声明一个
m_A = 100;
这个变量.在构造方法中赋值100;
然后我们再去创建一个子类Son,
然后子类中也有个m_A变量,然后子类中的这个变量,赋值的值是200
注意java中的子类和父类中是不能出现重名的变量的,但是c++中是可以的.可以看到
然后我们去写个测试类test01
然后我们在测试类中去打印Son s创建一个子类对象,然后
调用s.m_A去看看,结果.
可以看到是200对吧,也就是,调用的是子类中的m_A变量.
如果直接对象名.m_A变量来调用的话.
然后如果我们想调用父类的m_A变量怎么弄?
注意需要加个作用域就可以了,可以看到上面那样
s.Base::m_A 这样来调用
然后看到结果可以了.已经能调用到父类中同名的变量了.
可以看到上面写了一个总结.
然后我们再去,看看如果子类中有跟父类中同名的函数,会是什么样的情况呢?
我们首先在父类中添加一个func函数.
.
然后我们接着去调用一下试试,我们写个
test02方法,然后里面创建一个Son对象,然后调用
s.func(),可以看到没有报错,而son子类中,并没有这个func这个方法,
在父类中才有,所以我们就知道了,子类的对象是可以直接去调用父类的
方法的.
执行可以看到没问题
然后我们在子类中,也去添加,func这个函数,这个函数和父类中的func函数是重名的,
这个时候,
我们再去执行,可以看到,当子类中有跟父类中同名的函数的时候,
实际上,我们用子类对象去调用这个函数,调用的是子类的函数.
然后如果我们就是想调用父类的函数怎么办?
可以看到,也是加上作用域就可以了
s.Base::func()
这样就可以了.
执行可以看到,这样父类的func函数,也被调用到了.
如果我们在父类中添加一个func(int a),这个带参数的函数呢?
这个时候
如果我们调用的时候,直接写
子类的对象s.func(100);
可以看到报错了对吧.
如果我们把Son这个子类中的func函数,暂时删除掉以后,我们再去看看.
可以看到,这个时候,我们再用子类的对象s,去调用
s.func(100),就不报错了对吧.
就可以直接调用到父类中的有参的,func这个重载的函数了.
但是如果我们把子类中的func函数打开.
可以看到,用子类的对象s.func(100);
直接调用父类的有参func函数的时候,就报错了.
怎么回事呢?
实际上原因是,如果子类中出现和父类同名的成员函数,子类的同名成员会隐藏掉父类中,所有的同名成员函数,
也就是只要,子类中有跟父类中同名的成员函数,是会优先调用子类中的这个函数的.
当然子类中有这个同名的成员函数,会隐藏父类的所有的同名函数,也包含重载的这个名字的函数了.
所以,当子类中有这个同名函数的时候,调用父类中的有参的这个函数,就调用不到就报错了.
但是如果想要调用,也是可以的,那就是加上作用域,可以看到
上面s.Base::func(100);
加上了作用域以后,子类就可以调用父类的,有参的成员函数了.
看看结果.
总结一下
猜你喜欢
- 2025-03-29 C++类型转换函数:将当前类的类型转换为其它类型
- 2025-03-29 C++中两个类相互引用的解决办法(mfc两个类互相调用)
- 2025-03-29 C++类的三种继承方式:public/protected/private
- 2025-03-29 C++启蒙之旅--模板类为何物(c++模板的用法)
- 2025-03-29 C++类继承(c++类继承final)
- 2025-03-29 C++类的两种不同嵌套方式的实现与分析
- 2025-03-29 面试经验:68个C/C++常见面试题汇总(含答案)
- 2025-03-29 大话C++语言:类继承与派生(类的继承是指派生类继承基类的?)
- 2025-03-29 【C++编程语言】之 类和对象——静态成员
- 2025-03-29 C++友元类和友元函数是什么-Linu C++第63讲
- 最近发表
-
- 碎片时间学Python-01安装Python(python详细安装教程3.8)
- Python安装(python安装教程)
- Python pip安装与使用步骤(python3.6 pip安装)
- 第二篇:如何安装Python并运行你的第一个程序
- Python入门教程:安装(python安装教程2020)
- 常用的Python库安装方法(Python实用教程)
- Python下载与安装教程(很详细)(python下载安装教程3.9.1)
- python安装教程(小白入门)(python安装详细步骤)
- 详解pip的基本使用和离线安装Python第三方库
- (一)从零开始安装Python(然后安装python)
- 标签列表
-
- 菜鸟教程 (58)
- jsp (69)
- c++教程 (58)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- pythonif (68)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)