免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5546 | 回复: 12
打印 上一主题 下一主题

[C++] 某名企笔试题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-04-14 13:03 |只看该作者 |倒序浏览
5可用积分
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;

  4. string fun() {
  5.         string str = "hello";
  6.         return str;
  7. };

  8. void g(string &str) {

  9. }

  10. int main(void) {
  11.         g(fun());  //编译报错
  12.         return 0;
  13. }
复制代码
error: invalid initialization of non-const reference of type 'std::string& {aka std::basic_string<char>&}' from an rvalue of type 'std::string {aka std::basic_string<char>}'

上面是近期某互联网企业的笔试题。请教大家!

论坛徽章:
3
摩羯座
日期:2013-11-12 20:06:19午马
日期:2013-11-27 16:35:55双鱼座
日期:2014-04-04 19:02:30
2 [报告]
发表于 2013-04-14 13:38 |只看该作者
本帖最后由 mci2004 于 2013-04-14 13:39 编辑
  1. void g(const string &str) {

  2. }
复制代码
这样就能编译过!

理由是,C++中临时变量不能作为非const 引用参数传递。

================UPDATE=============
lz,可以google上面的那句话

论坛徽章:
9
CU大牛徽章
日期:2013-04-17 11:06:23CU大牛徽章
日期:2013-04-17 11:08:52CU大牛徽章
日期:2013-04-17 11:09:10CU大牛徽章
日期:2013-04-17 11:09:40CU大牛徽章
日期:2013-04-17 11:09:57CU大牛徽章
日期:2013-04-17 11:10:17CU大牛徽章
日期:2013-05-20 10:43:41CU大牛徽章
日期:2013-05-20 10:44:06CU大牛徽章
日期:2013-05-20 10:44:16
3 [报告]
发表于 2013-04-14 14:38 |只看该作者
:wink:

论坛徽章:
6
技术图书徽章
日期:2013-11-13 11:11:27子鼠
日期:2014-02-20 17:54:13处女座
日期:2014-06-16 17:43:33午马
日期:2014-08-08 09:11:17未羊
日期:2014-08-10 11:57:072015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2013-04-19 11:19 |只看该作者
这绝对是基础题。

论坛徽章:
0
5 [报告]
发表于 2013-04-20 01:45 |只看该作者
本帖最后由 Frahm 于 2013-04-20 01:46 编辑

可以传非const引用,不过是右值引用
  1. void g(string &&str) {

  2. }
复制代码

论坛徽章:
0
6 [报告]
发表于 2013-04-22 19:52 |只看该作者
回复 5# Frahm


    This is called universal reference

论坛徽章:
0
7 [报告]
发表于 2013-04-25 17:04 |只看该作者
本帖最后由 Frahm 于 2013-04-25 17:04 编辑

回复 6# zyzbill


    这不是,那个术语是Scott Meyers定义的,universal reference有两个条件,一个是模版参数中出现T&&,另一个是模版参数必须是推导出来的,而这个例子中显然都不满足

论坛徽章:
0
8 [报告]
发表于 2013-04-27 13:11 |只看该作者
mci2004 发表于 2013-04-14 13:38
这样就能编译过!

理由是,C++中临时变量不能作为非const 引用参数传递。


lz的代码在我的机器上编译链接都没错,我的IDE是VS 2010

论坛徽章:
0
9 [报告]
发表于 2014-03-30 10:54 |只看该作者
本帖最后由 zmy235 于 2014-03-30 11:03 编辑

将变量装成常量,试一试

论坛徽章:
4
双子座
日期:2014-08-28 10:08:002015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:112015年亚洲杯之阿联酋
日期:2015-03-13 03:25:15
10 [报告]
发表于 2014-03-31 11:02 |只看该作者
题目倒是比较基础,不过你可以反问一下,c++不支持此类匿名变量,难道还感到骄傲了吗? 未来的趋势应该是要支持这类的吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP