社区
C语言
帖子详情
轻松了。放点分,随便来吵一下架,刺激一下。
earthharp
2003-01-13 06:02:18
你是否认为C++中如下的初始化语法具有二义性:
class Base
{};
int main()
{
Base base = Base();
}
:D
...全文
105
65
打赏
收藏
轻松了。放点分,随便来吵一下架,刺激一下。
你是否认为C++中如下的初始化语法具有二义性: class Base {}; int main() { Base base = Base(); } :D
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
65 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
earthharp
2003-01-16
打赏
举报
回复
结帖。
T x = T();
因为这样的初始化语法对于任何能使用T()初始化的类型都是适用的。包括内建类型。
Base base = Base();
这样的语句,若class Base提供的copy ctor为Base(Base &)而能编译通过,则应视为错误。因为临时对象为Rvalue.
dindon
2003-01-15
打赏
举报
回复
可以显式的调用构造函数吗?
或者楼主的问题有别的解释?
谁告诉我!!
hoo000
2003-01-15
打赏
举报
回复
AC_TRYSTART
_feSocket.Initialize (socketPath, userID, programID,& (_indCancelDataControl->GetShmAccess()) );
AC_TRYEND (exc,
errCode = INIT_SOCKET_ERR;
return ACFalse);
AC_TRYSTART
_feSocket.Request ((AFEUpdateInfo*)this);
AC_TRYEND (exc,
errCode = INIT_SOCKET_ERR;
return ACFalse);
Zark
2003-01-15
打赏
举报
回复
不懂楼主的"二义"指的是什么?什么和什么"二义"了.因为在这版上挣分太难,所以入乡随俗,也来凑一脚.
仅就其代码来说,是没有"错误"的,不知这是不是"二义"的范畴.就我个人的理解, Base base=Base(); 是这样工作的,先在栈上开辟一块大小为sizeof(Base)的内存区,base的地址就是这块内存起始点,然后调用Base类中的缺省构造函数生成一个临时对象,再调用Base类的拷贝构造函数对base为起点的内存各字节进行赋值.
liushmh
2003-01-15
打赏
举报
回复
我也来凑热闹:)
class Base
{};
一般来说,由于Base没有派生于别的类,也没有成员需要初始化,这样ctor
和copy ctor, operator =()应该都是trivial的,
c++编译器不会生成这些函数。
franky1
2003-01-15
打赏
举报
回复
http://www.smiling.com.cn/search/groupinfo.ecgi?group_id=39097&gname=gafield
loujing
2003-01-15
打赏
举报
回复
顶
cjz103
2003-01-15
打赏
举报
回复
up!!
JoshuaLi
2003-01-15
打赏
举报
回复
对Zark(金陵五月)表示五体投地
magicblue
2003-01-15
打赏
举报
回复
Zark(金陵五月)说出了问题真正的地方。楼主所谓的“二义”似乎比较含糊。一般所说的二义指编译器不能在两个决议之间做出选择。但楼主在这里用二义来指左右值赋值问题,好象大家有些误解。如果指一般的二义,文件中定义了一个函数Base()且返回Base类型对象。Base base = Base();就是有二义性的。这在我上面的回帖中也说明了。如果指左右值,我们大可不必来趟这浑水,除非你是C++委员会委员.这些问题与C++如何实现有关,怎么实现是厂商的事情,厂商不喜欢教条主义。要么你也可以从哲学角度来想想为什么有时候所谓的临时对象可以被改变,有的时候为什么又不能(你能改变函数参数传递时生成的临时对象吗?),另外,最重要的是:临时对象是左值还是右值是不是一个问题?
另外据我所知STL中用T parameter_of_function = T();这种初始化来避免不必要的copy-ctor开销。至于楼主所说“在不能确定模板类型T的情况下,这是相当有利的。”并不知晓,还望楼主答复一下。
_炳叔_
2003-01-15
打赏
举报
回复
我也觉得没有什么问题
lizhiwo_wo
2003-01-15
打赏
举报
回复
come on,come on
runorstop
2003-01-15
打赏
举报
回复
光是这两个东东应该是没二意的。
franky1
2003-01-15
打赏
举报
回复
come on
robbinwoo
2003-01-15
打赏
举报
回复
因为我也是菜鸟,所以我认为“Bandry(菜鸟-舍我其谁)”的说法是对的.
neubird
2003-01-15
打赏
举报
回复
up
Bandry
2003-01-15
打赏
举报
回复
在这儿应该没有,编译器会有一个默认的构造函数
zhihaitao
2003-01-15
打赏
举报
回复
不用这样引大家迷茫吧!!:<
earthharp
2003-01-14
打赏
举报
回复
嘿嘿
up一下,还有很多分呢
JoshuaLi
2003-01-14
打赏
举报
回复
int main()
{
int i1 = int(); // 《C++ primer》
int i2 = i2;
int i3 = i3 = 0;
return 0;
}
加载更多回复(45)
想玩
刺激
战场丧尸模式?教你怎么进
刺激
战场国际服体验服打丧尸
本文详细介绍如何进入
刺激
战场国际服体验服,包括下载安装方法及模拟器使用技巧,解决‘不支持机型’问题,让你
轻松
畅玩全新丧尸模式。
[GDOI2017游记]一次
刺激
的冲省队历程
本文回顾了一位选手在GDOI省选的经历,包括赛前准备、比赛过程中的心态变化及应对策略,最终以校线最后一名的成绩入选省队。
快压护眼精灵怎么卸载_倍
轻松
iSeeX护眼仪体验:不讨好世界,只讨好自己的AI智能产品...
本文介绍了一款由天猫精灵与倍
轻松
科技联合定制的AI眼部按摩仪——Breo倍
轻松
AI眼精灵。该产品不仅具备智能语音控制功能,还能提供多种按摩模式,如爱眼模式、护眼模式等,有效缓解长时间使用电子设备造成的眼部疲劳。
龙族幻想最新东京机器人位置_龙族幻想:这个异闻全程高能,有坐标也不一定能完成,真
刺激
...
本文介绍了《龙族幻想》中的新异闻“东京跳跃者”的完成技巧。首先,玩家需要到达指定地图位置触发异闻,然后寻找13只小黄鸭。攻略建议可以跟随其他玩家或地毯式搜索楼顶,通过耐心探索和利用地标,最终成功完成异闻。这篇攻略旨在帮助玩家节省时间,体验楼顶跳跃的
刺激
感,并获得异闻成就。
hw叠加层开还是不开_有哪些家居好物,一旦用过一次,就再也离不开了
本文推荐了15款能显著提升家居幸福感的好物,如日式可抛马桶刷、晴山嘻哈海绵擦、厨卫铁艺沥水
架
等,涵盖了从厨房到浴室的各种实用小工具。
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章