免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: Frahm
打印 上一主题 下一主题

[C++] 问一下这个是什么语法 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2013-10-06 13:25 |只看该作者
回复 10# linux_c_py_php

你说func(12)是强转? 虽然看起来结果是强转,但这不是初始化吗? 应该和 func f(12)一样的, 但这个却编译不了。

   

论坛徽章:
0
12 [报告]
发表于 2013-10-06 15:09 |只看该作者
看不太清楚

论坛徽章:
0
13 [报告]
发表于 2013-10-06 21:29 |只看该作者
Frahm 发表于 2013-10-06 13:03
回复 7# qinggeng

好吧……我猜func(12)被理解为构造函数了……类似于int(12)这种……

论坛徽章:
0
14 [报告]
发表于 2013-10-06 23:58 |只看该作者
一般的单参构造和转换在C++中本来就是统一的,所以才有explicit关键字

论坛徽章:
0
15 [报告]
发表于 2013-10-07 16:45 |只看该作者
回复 14# sonicling


    func f(12); 这样写也是explicit的,implicit一般是在传参,返回,赋值之类的地方。explicit虽然可用于cast和单参构造,但是应该对func f(12); 与 func f = func(12); 这两种语法行为一致吧,所以我觉得这跟explicit无关。

论坛徽章:
0
16 [报告]
发表于 2013-10-07 22:08 |只看该作者
回复 15# Frahm


    所以你理解的就有问题。explicit/implicit cast指的是表达式,func f(12);是带初始化的声明语句,这个语句中的表达式是12,你说将它转换为f构造所需要的func类型应该是explicit还是implicit?

其他三条你自己去找对应的表达式,别找语句。

论坛徽章:
0
17 [报告]
发表于 2013-10-08 11:44 |只看该作者
回复 16# sonicling


    func f(12);这是explicit的,比如你写个类,一个explicit的单参构造函数, A a = 12; 这个是就不行(implicit), 而 A a(12); 是可以的,它的行为符合explicit,直接显式调用构造函数。

论坛徽章:
0
18 [报告]
发表于 2013-10-08 16:49 |只看该作者
我不知道  
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP