java和c++两门语言对于父子类中同名函数具有不同的处理方式。

先上两段代码:

C++:

class Basic
{
public:
void test(string i){
cout << "basic str" <<endl;
}
void test(int i){
cout << "basic" <<endl;
} }; class Senior : public Basic
{ public:
void test(long i){
cout << "senior 1" <<endl;
} }; int main(int argc, const char * argv[]) {
// insert code here...
std::cout << "Hello, World!\n"; Senior ps;
ps.test();
string str("c");
ps.test(str);
return ;
} //输出结果
编译错误,提示No viable conversion from 'string' (aka 'basic_string<char, char_traits<char>, allocator<char> >') to 'long' 修改标红的代码--> ps.Basic::test(str) 则可以编译成功,并输出预期的结果 senior 1 basic str

public class Basic{
public int testException(int val) {
try{
int j = 3/1;
return j;
}
catch(Exception e){
return -1;
}
}
public String testException(String val) {
try{
return new String("ac");
}
catch(Exception e){
return new String("bc");
}
} }; public class Senior extends Basic{
public Long testException(Long val) {
try{
return (long) 9;
}
catch(Exception e){
return (long) 7;
}
}
} public static void main(String args[]) throws InstantiationException, IllegalAccessException, SecurityException, Exception{
// 向控制台输出信息 Senior ba = new Senior();
System.out.println("basic:" + ba.testException(2));
System.out.println("basic:" + ba.testException("123"));
}
} 输出结果 basic:3 basic:ac
 
 

比较这个例子中的不同,原因是java语言中父类和子类的同名函数做的是重载处理,而C++中是隐藏父类中的函数,如果需要调用父类中同名函数,需要显式指定调用(通过class::funtion_name)。

【java&c++】父子类中同名函数的覆盖问题的更多相关文章

  1. tips:Java的Random类和Random函数

    tips:Java的Random类和Random函数! 随机数是一个很有趣的东西,在java中可以通过下面这2种方法得到: (1)Random类: Random类是java.util.Random这个 ...

  2. 编译器如何处理C++不同类中同名函数(参数类型个数都相同)

    转载请注明出处,版权归作者所有 lyzaily@126.com yanzhong.lee 作者按: 从这篇文章中,我们主要会认识到一下几点: 一.不类中的特征标相同的同名函数,它们是不同的函数,原因就 ...

  3. 教你在Java的普通类中轻松获取Session以及request中保存的值

    曾经有多少人因为不知如何在业务类中获取自己在Action或页面上保存在Session中值,当然也包括我,但是本人已经学到一种办法可以解决这个问题,来分享下,希望对你有多多少少的帮助! 如何在Java的 ...

  4. 类中成员函数与数据成员private/pubic/protected

    类中成员函数与数据成员private/pubic/protected

  5. java.util.Stack类中的peek()方法

    java.util.stack类中常用的几个方法:isEmpty(),add(),remove(),contains()等各种方法都不难,但需要注意的是peek()这个方法. peek()查看栈顶的对 ...

  6. cocos2dx lua 绑定之一:自动绑定自定义类中的函数

    cococs2dx 3.13.1 + vs2013 + win10 1.首先定义C++类Student 在cocos2d-x\cocos文件夹下新建一个user_define的文件夹放置两个文件. 注 ...

  7. C++解析(16):友元与类中的函数重载

    0.目录 1.友元的尴尬能力 2.类中的函数重载 3.小结 1.友元的尴尬能力 什么是友元? 友元是C++中的一种关系 友元关系发生在函数与类之间或者类与类之间 友元关系是单项的,不能传递 友元的用法 ...

  8. string类中getline函数的应用

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  9. 23.C++- 继承的多种方式、显示调用父类构造函数、父子之间的同名函数、virtual虚函数

     上章链接: 22.C++- 继承与组合,protected访问级别 继承方式 继承方式位于定义子类的”:”后面,比如: class Line : public Object //继承方式是publi ...

随机推荐

  1. CTF—攻防练习之SMB私钥泄露

    攻击机:192.168.32.152 靶机 :192.168.32.155 打开靶机 nmap一下 我们看到了开放了 ssh,smb,mysql这些端口,还有一个大端口 对smb服务我们可以1.使用空 ...

  2. 【VS开发】【图像处理】GigE和USB3 vision选择?

    [VS开发][图像处理]GigE和USB3 vision选择? 具体得看你现场的应用吧,如 现场需要的工作距离,网线可达到100m以内,USB3.0一般般的5m以内: GigE双端都有卡扣,保证了与相 ...

  3. IDEA github 上传项目, 拉取, 删除

    1.IDEA登录github账号 settings -> Version Controller -> GitHub 用户名密码登录 或token登录都可以 2.VCS -> impo ...

  4. CSRF-DVWA_1.9-笔记

     CSRF : Cross-site request forgery  跨站请求伪造   所用到的工具: Firefox浏览器及其插件     HackBar(快速构造URL)     和     T ...

  5. [转帖]2017年新闻: 中国CPU还在“群雄割据” ,印度已确定了国家指令集

    中国CPU还在“群雄割据” ,印度已确定了国家指令集 时间:2017-12-21 作者:观察者网 https://www.eet-china.com/news/201712210610.html   ...

  6. 开启linux服务器防火墙

    启用ufwsudo ufw enablesudo ufw default deny运行以上两条命令后,开启了防火墙,并在系统启动时自动开启.关闭所有外部对本机的访问,但本机访问外部正常. 开启和禁用s ...

  7. LeetCode_9_回文数字

    回文数(LeetCode 9) 1.题目 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: - ...

  8. 微信小程序的拖拽、缩放和旋转手势

    在开发中,有时会遇到像App中的手势那样的效果,下面就仿照App实现了一下. wxml部分: <view class="touch-container"> <vi ...

  9. 删除项目中所有的__pycache__ 文件

    关于 pycache 当第一次运行 python 脚本时,解释器会将 *.py 脚本进行编译并保存到 __pycache__ 目录 下次执行脚本时,若解释器发现你的 *.py 脚本没有变更,便会跳过编 ...

  10. 一分钟理解sku和spu

    SPU SPU = Standard Product Unit (标准化产品单位) SPU是商品信息聚合的最小单位,是一组可复用.易检索的标准化信息的集合,该集合描述了一个产品的特性.通俗点讲,属性值 ...