今天做了两道面试题,硬还没做出来..

Jinhao 2009-11-10 06:30:04
事情是这样,QQ上一个朋友问我了两道面试题,
1,(填空)
我们在循环里,当使用break、continue,goto的时候应该写注释注明为什么要退出循环,还应该考虑____


2,一个class String,后序++的重载,应该选____
A) Stirng operator++(int)
B) String &operator++(int)

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
还真答不出来。

1,朋友问我非要给出答案,我就说真想不到,随便写上一个吧。比如,break,continue只对它所在的循环有作用。
2,我选A和B。
...全文
1030 83 打赏 收藏 转发到动态 举报
写回复
用AI写文章
83 条回复
切换为时间正序
请发表友善的回复…
发表回复
redball22 2011-06-12
  • 打赏
  • 举报
回复
这题选择的是A。这主要是对++的一个重载问题。带&的用于前置重载,不带&的是后置重载
pengzhixi 2009-12-02
  • 打赏
  • 举报
回复
第2题就算是A的话也应该是返回const String
「已注销」 2009-12-02
  • 打赏
  • 举报
回复
[Quote=引用 65 楼 liuchui2009 的回复:]
1.还应该写出跳出循环后,程序转向哪里。
2.A
[/Quote]
觉得这个对
forster 2009-12-02
  • 打赏
  • 举报
回复
烙铁,,
JayAnn 2009-12-02
  • 打赏
  • 举报
回复
这种面试题有意思吗?
pengzhixi 2009-12-02
  • 打赏
  • 举报
回复
本身对String 重载++就是一个莫名其妙的事情,还有对String重载+也是一个违反本身语义的事情
lovesi3344 2009-12-02
  • 打赏
  • 举报
回复
垃圾 第二题竟然还有人选B
xylicon 2009-12-02
  • 打赏
  • 举报
回复
第二题选A
原因是作为后缀操作,返回的是右值
逸学堂 2009-12-02
  • 打赏
  • 举报
回复
1,(填空)
我们在循环里,当使用break、continue,goto的时候应该写注释注明为什么要退出循环,还应该考虑____

~~~~~~~~~~~
看公司的规范了,考虑的东西不用写出来,所以我什么都不考虑,直接注明原因就行了。


2,一个class String,后序++的重载,应该选____
A) Stirng operator++(int)
B) String &operator++(int)

选B,不过从string类上做,++ int操作,也够变态的。
jhony_lee 2009-12-02
  • 打赏
  • 举报
回复
第二题选A
看看《more effective c++》里面讲得很好
codebm 2009-12-02
  • 打赏
  • 举报
回复
顶个 无聊的题目``
1.还应该考虑注释用中文
2.都行
ProgrammerNO1 2009-12-02
  • 打赏
  • 举报
回复
我们在循环里,当使用break、continue,goto的时候应该写注释注明为什么要退出循环,还应该考虑____


应该考虑不同场合的用法,,个人看法
ProgrammerNO1 2009-12-02
  • 打赏
  • 举报
回复
[Quote=引用 74 楼 lovesi3344 的回复:]
垃圾 第二题竟然还有人选B
[/Quote]

你想怎样,俺A,B都选,,哈哈
bfhtian 2009-11-24
  • 打赏
  • 举报
回复
第二题没有具体的语义,选哪个都可以。但是我倾向于选A
shangweidenglu 2009-11-23
  • 打赏
  • 举报
回复
MARK
程序猿2023 2009-11-12
  • 打赏
  • 举报
回复
第一个真没想法
do_fork 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 55 楼 yutaooo 的回复:]
引用 52 楼 jinhao 的回复:
两个方面
1,仅仅考虑语法,后置operator++应该是一个右值表达式。
反驳:能是右值那就一定能用左值。

2,operator++一定要象effective c++说的那样,搞一个返回值,跟内建类型一样。
反驳:一个类型的operator++的语义决定了他应该返回什么,而不是依据这个莫须有的教条。如果这个类自身的语义不满足一个算法的要求,即使遵循effective c++的教条也无济于事。


1. 对于1,我是力挺LZ的。那位仁兄还没搞清楚,对于非内置类型的临时对象,是可以赋值的。

2. 对于2。这有什么教条的,还有前置++可以用呢。硬要说后置++返回个当前值,那也随你,不过不符合惯例,让周边的人不适应。
[/Quote]

对String弄个++操作,已经让我很不适应了
yutaooo 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 52 楼 jinhao 的回复:]
两个方面
1,仅仅考虑语法,后置operator++应该是一个右值表达式。
反驳:能是右值那就一定能用左值。

2,operator++一定要象effective c++说的那样,搞一个返回值,跟内建类型一样。
反驳:一个类型的operator++的语义决定了他应该返回什么,而不是依据这个莫须有的教条。如果这个类自身的语义不满足一个算法的要求,即使遵循effective c++的教条也无济于事。
[/Quote]

1. 对于1,我是力挺LZ的。那位仁兄还没搞清楚,对于非内置类型的临时对象,是可以赋值的。

2. 对于2。这有什么教条的,还有前置++可以用呢。硬要说后置++返回个当前值,那也随你,不过不符合惯例,让周边的人不适应。
forster 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 53 楼 jinhao 的回复:]
引用 51 楼 forster 的回复:
不知道你表达的意思。

注意,这里是针对某个自定义类型的operator。
[/Quote]
我的意思是重载一个运算符 一般是要实现这个运算符本质类似的功能
Jinhao 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 51 楼 forster 的回复:]
int operator+ (int a,int b)
{
return a*b;
}
int operator* (int a,int b)
{
return a+b;
}
这样妥吗
妥的话 什么都妥
[/Quote]

不知道你表达的意思。

注意,这里是针对某个自定义类型的operator。
加载更多回复(63)

64,652

社区成员

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

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