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

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。
...全文
935 点赞 收藏 83
写回复
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
回复 点赞
flyingcloude 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。
回复 点赞
发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告