【java&c++】父子类中同名函数的覆盖问题
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++】父子类中同名函数的覆盖问题的更多相关文章
- tips:Java的Random类和Random函数
tips:Java的Random类和Random函数! 随机数是一个很有趣的东西,在java中可以通过下面这2种方法得到: (1)Random类: Random类是java.util.Random这个 ...
- 编译器如何处理C++不同类中同名函数(参数类型个数都相同)
转载请注明出处,版权归作者所有 lyzaily@126.com yanzhong.lee 作者按: 从这篇文章中,我们主要会认识到一下几点: 一.不类中的特征标相同的同名函数,它们是不同的函数,原因就 ...
- 教你在Java的普通类中轻松获取Session以及request中保存的值
曾经有多少人因为不知如何在业务类中获取自己在Action或页面上保存在Session中值,当然也包括我,但是本人已经学到一种办法可以解决这个问题,来分享下,希望对你有多多少少的帮助! 如何在Java的 ...
- 类中成员函数与数据成员private/pubic/protected
类中成员函数与数据成员private/pubic/protected
- java.util.Stack类中的peek()方法
java.util.stack类中常用的几个方法:isEmpty(),add(),remove(),contains()等各种方法都不难,但需要注意的是peek()这个方法. peek()查看栈顶的对 ...
- cocos2dx lua 绑定之一:自动绑定自定义类中的函数
cococs2dx 3.13.1 + vs2013 + win10 1.首先定义C++类Student 在cocos2d-x\cocos文件夹下新建一个user_define的文件夹放置两个文件. 注 ...
- C++解析(16):友元与类中的函数重载
0.目录 1.友元的尴尬能力 2.类中的函数重载 3.小结 1.友元的尴尬能力 什么是友元? 友元是C++中的一种关系 友元关系发生在函数与类之间或者类与类之间 友元关系是单项的,不能传递 友元的用法 ...
- string类中getline函数的应用
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- 23.C++- 继承的多种方式、显示调用父类构造函数、父子之间的同名函数、virtual虚函数
上章链接: 22.C++- 继承与组合,protected访问级别 继承方式 继承方式位于定义子类的”:”后面,比如: class Line : public Object //继承方式是publi ...
随机推荐
- 使用putty远程登录Ubuntu时,报Network error:Connection refused错误及解决(记录)
putty远程登录Ubuntu,弹出Network error:Connection refused的错误提示框,就是因为Ubuuntu没有安装ssh服务.执行命令: sudo apt-get ins ...
- 主机加固之win7
这套主机加固方案很简单,一步一步按着顺序来弄就可以,部分步骤还配有相关图片.可以先用虚拟机来做一次加固,以防弄错后不好恢复.记得弄个快照,以防万一.下次有空写个win7暴力破解~ 1. 配置管理 1. ...
- 爬虫4之pyquery
pyquery 初始化 字符串初始化 from pyquery import PyQuery as pq doc = pq(html)#html为需要处理的内容 #方法与CSS选择器相同 print( ...
- [ASP.NET] 后台判断文本框输入内容是否为数字
由于使用JS在前台对文本框内容进行检测后似乎会影响回传 故在后端进行对内容判断 代码示例: string abnormal_num = Abnormal_Num.Text;//獲取文本框的text值 ...
- 2019JAVA第十一次实验报告
#Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.11.22 评分等级 简易记事本 实验代码 package Domon10; import java.aw ...
- numpy将数组保存为文件
保存单个数组 np.save和np.load是读写磁盘数组数据的两个主要函数.默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中的: 如果文件路径末尾没有扩展名.npy,则该扩展 ...
- 图片服务器期,利用一下园子练习一下markdown
图片储存
- 列表(索引切片 增删改查 嵌套) range 元组的初识
li = ["alex", "WuSir", "ritian", "barry", "wenzhou" ...
- ActionsChains类鼠标事件和Keys类键盘事件
一.鼠标事件 如,移动.点击.释放.单击.右击,拖动等 键盘事件如:输入.回车.粘贴.复制.剪贴等 使用ActionsChains类和Keys类之前都必须先导入 from selenium ...
- 严重报错: Error configuring application listener of class org.springframework.web.context.ContextLoaderLis
其实可能是你的jar文件没有同步发布到自己项目的lib目录中(如果你是用Maven进行构建的话) 可以试试 下面的办法 项目点击右键 点击 Properties 选择Deployment Assemb ...