急问c++里两个简单的问题

wuda_1990 2009-08-08 08:24:56
vc编译器里unable to resolve function overload是啥意思?
Sample<T> &Sample<T>::operator + ( const Sample<T>&s)中的const有啥作用,我如果去掉const就会出现错误啊,还有,Sample<T> &是怎样的返回值类型
向大家请教了!
...全文
158 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
uwinb 2009-08-09
  • 打赏
  • 举报
回复
报不报错,除了定义,还由你的调用方式来决定,两者一致才能顺序通过。
const Sample <T>&s 和 Sample <T>&s 是两种完全不同的类型,就如同bool和float的区别那样。
由于表达式中匿名对象的存在,非常量可以当作常量来处理,反之却不行,因为那样会违反语义约束。
lixing01 2009-08-09
  • 打赏
  • 举报
回复
Sample <T> &Sample <T>::operator + ( const Sample <T>&s)中的const有啥作用:

重载+操作符,显式传递的第二个参数以引用方式传递必须是const的,即在该重载函数内不能对该参数的引用进行修改。

a + b 相当于 a.+(b),b在重载函数中必须是const引用,否则如果b是const常量,那么+法就无法完成,因为函数参数的传递不能将const实参以引用方式传递给非const形参(无法保证常量的数据保护)。
billow_zhang 2009-08-09
  • 打赏
  • 举报
回复
这个问题,要是回答的话,又会引出下一个问题,接着就是连锁反应,要成为C++培训班了.楼主还是先看书吧.可以针对这书里的看不懂的内容,再提问.
Sou2012 2009-08-09
  • 打赏
  • 举报
回复
重载函数
Dave888Zhou 2009-08-08
  • 打赏
  • 举报
回复
(1)unable to resolve function overload:不能解析函数重载。就是你定义的几个同名的函数重载版本,或者有问题,或者并没有构成真正的重载关系,编译器在解析时发现有几个函数可以同等地选择,不知道该调用哪一个。如果是真正地构成重载关系的话,编译器是一定能选择出唯一的一个最精确匹配函数来调用的。因此,你要检查一下你写的函数是否真正地符合重载规则了,你肯定哪里没有符合重载规则。

(2)const是限制你在operator+这个函数里不能更改s指向的这个对象的任何值。Sample<T>& 是返回Sample<T>对象的引用。
zsxcn 2009-08-08
  • 打赏
  • 举报
回复
去掉const之后你的声明和定义就不一致了吧,编译器就无法解析了
wanjingwei 2009-08-08
  • 打赏
  • 举报
回复
是不是你函数定义和声明的不一致
字云逸 2009-08-08
  • 打赏
  • 举报
回复
vc编译器里unable to resolve function overload是啥意思?
这应该是 函数重载不能执行 的意思吧
至于那个是什么返回类型,我也不知道..
wodei 2009-08-08
  • 打赏
  • 举报
回复
看书吧!
lwlchristy 2009-08-08
  • 打赏
  • 举报
回复
哦,这个。。。楼主先看下书!
Vegertar 2009-08-08
  • 打赏
  • 举报
回复
C++ Primer 总得过一遍

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧