社区
C语言
帖子详情
有关重载函数?
doublejie
2003-03-07 12:40:35
第一组:
void dribble (char * bits);
void dribble (const char * bits);
是重载函数吗?
第二组:
void dribble (char * bits);
void dribble (const char * cbits);
是重载函数吗?
...全文
70
20
打赏
收藏
有关重载函数?
第一组: void dribble (char * bits); void dribble (const char * bits); 是重载函数吗? 第二组: void dribble (char * bits); void dribble (const char * cbits); 是重载函数吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hot1985
2003-03-09
打赏
举报
回复
mark
doublejie
2003-03-09
打赏
举报
回复
等待专家,我已晕了:(
luckyum
2003-03-08
打赏
举报
回复
我也加一个
char& position(int,int);
char position(int,int)const;
这个重载函数很有用。
cout<<position(4,4);
position(4,4)="+";
可他是怎么判断用哪个呢?
WeltactXp
2003-03-07
打赏
举报
回复
都不是
因为只跟函数签名有关,况且我又记得const不属于签名里面的东西
但愿我没有记错给你带来混淆
ckacka
2003-03-07
打赏
举报
回复
都是
重载和形式参数名字没有关系,而是形式参数的类型
JoshuaLi
2003-03-07
打赏
举报
回复
第一组:
void dribble (char *);
void dribble (const char *);
是重载函数吗?
第二组:
void dribble (char *);
void dribble (const char *);
是重载函数吗?
//
都是,既然是原型就可以去掉参数名
seablue
2003-03-07
打赏
举报
回复
楼上说的没错,是不是重载我有点模糊
但调试时的确没有报错,,重载只重类型,个数,只要编译器能识别就行
但这样定义的意议不是很大
WeltactXp
2003-03-07
打赏
举报
回复
晕喽
tjhgltt
2003-03-07
打赏
举报
回复
up
jinyongzhi
2003-03-07
打赏
举报
回复
chinajiji(菜鸟叽叽):
这个也是重载:
void f(int);
void f(int)const;
class Base{};
class Derived : public Base{};
void f() throw(Base);
void f() throw(Derived);
上面那两组我觉得都不是重载,可调试的时候都没有报错,是什么原因?
jinyongzhi
2003-03-07
打赏
举报
回复
chinajiji(菜鸟叽叽)
没讲,你说说看
另外,你还没说你举的那两个例子到底是不是重载呢,说说原因。
jinyongzhi
2003-03-07
打赏
举报
回复
void dribble (char* );
void dribble (const char*);
是重载,换成引用也是,但如果改成
void dribble (char);
void dribble (const char);
就不是重载了,因为参数是值传递,仅仅是传递给函数一个备份,const的意义不大。
以下是《c++ primer》的原话:
当一个参数类型是const或volatile时,在识别函数声明是否相同时并不考虑const和volatile修饰符。
//声明了同一函数:
void f( int );
void f( const int );
参数是const,这只跟函数的定义有关系:它意味着,函数体内的表达式不能改变参数的值。但是,对于按值传递的参数,这对函数的用户是完全透明的:用户不会看到函数对按值传递的实参的改变。
……
如果把const或volatile应用在指针或引用参数指向的类型上,则在判断函数声明是否相同时,就要考虑const和volatile修饰符。
//声明了不同函数:
void f( int* );
void f( const int* );
//声明了不同函数:
void f( int& );
void f( const int& );
chinajiji
2003-03-07
打赏
举报
回复
jinyongzhi(__Intel Inside__)
的那个回复很好!学习!
但C++ primer中是否讲了:
void dribble (char);
void dribble (const char);
就不是重载了
而:
void f( int* );
void f( const int* );
是重载的最根本的原因了吗?
如果讲了,请贴出来看一看.
如果没讲,我来解释一下,看对不对?
chinajiji
2003-03-07
打赏
举报
回复
jinyongzhi(__Intel Inside__)
看法不妥,
const object calling const member function, non-const object calling non-const member function.
jinyongzhi
2003-03-07
打赏
举报
回复
我记得,重载只看函数名跟参数列表,返回值根本不影响重载
void f(int);
void f(int)const;
虽然重载没有报错,但对象调用时却只能调用void f(int)。
mare
2003-03-07
打赏
举报
回复
重载和形式参数名字没有关系,而const也认为是署名的一部分
所以我认为两个都不是重置,那么应该跟第一位一样吧
chinajiji
2003-03-07
打赏
举报
回复
这个也是重载:
void f(int);
void f(int)const;
这个不是:
int* f(int);
const int* f(int);
//嘿嘿,看看下面两个是不是重载:
class Base{};
class Derived : public Base{};
void f() throw(Base);
void f() throw(Derived);
chinajiji
2003-03-07
打赏
举报
回复
是重载,const 是参数类型的一个组成部分.而参数名字更本与重载无关.形参名不要都可以.
tjhgltt
2003-03-07
打赏
举报
回复
我想你的问题很矛盾,即然用了CONST保留为什么还要重载它?
doublejie
2003-03-07
打赏
举报
回复
楼上的两位:我晕!
重载和形式参数的名字是没有关系,但是和const有没有关系?
什么是
函数
重载
?
本文深入探讨C++中的
函数
重载
概念,解释了如何通过参数类型、数量和顺序的不同来实现
函数
重载
,同时强调了
函数
重载
的规则及常见误区,如返回类型和参数名称的差异不会导致
函数
重载
。
函数
重载
本文详细介绍了
函数
重载
的概念,包括其定义、应用场景以及在C和C++中的区别。此外,还探讨了编译器如何解决
重载
时的命名冲突、解析
重载
函数
调用的方法,以及
重载
与作用域的关系。
JavaScript
函数
重载
(js
函数
重载
)
博客探讨了JavaScript中
函数
重载
的概念,发现JS中并不存在真正的
函数
重载
,而是后面的定义覆盖了前面的。作者通过模拟实现
重载
,利用arguments对象根据实参个数实现不同功能,达到了类似
重载
的效果。强调了在模拟
重载
时应考虑代码可读性和减少代码冗余。
重载
学习——
函数
重载
与运算符
重载
本文详细介绍了C++中
函数
重载
和运算符
重载
的概念、区别、实现方法,包括类的成员
函数
和友元
函数
的
重载
格式,以及示例代码展示了如何
重载
加法、减法、输出输入运算符等。,
方法
重载
与
函数
重载
本文解析了
函数
重载
和方法
重载
的概念及其在C++中的应用,通过实例展示了如何利用
函数
重载
减少命名冲突,并介绍了方法
重载
在类中的实现方式。
C语言
70,039
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章