社区
C语言
帖子详情
轻松了。放点分,随便来吵一下架,刺激一下。
earthharp
2003-01-13 06:02:18
你是否认为C++中如下的初始化语法具有二义性:
class Base
{};
int main()
{
Base base = Base();
}
:D
...全文
45
65
打赏
收藏
轻松了。放点分,随便来吵一下架,刺激一下。
你是否认为C++中如下的初始化语法具有二义性: class Base {}; int main() { Base base = Base(); } :D
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)
六十八个超级经典小故事
六十八个超级经典小故事一、用人之道 去过庙的人都知道,一进庙门,首先是弥陀佛,笑脸迎客,而在他的北面,则是黑口黑脸的韦陀。但相传在很久以前,他们并不在同一个庙里,而是
分
别掌管不同的庙。 弥乐佛热情快乐,所以来的人非常多,但他什么都不在乎,丢三拉四,没有好好的管理账务,所以依然入不敷出。而韦陀虽然管账是一把好手,但成天阴着个脸,太过严肃,搞得人越来越少,最后香火断绝。 佛祖在查香火的时候...
同居的童话
分
享
一下
我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。
分
享知识,造福人民,实现我们中华民族伟大复兴! (一)从公交车上下来,
求职的一篇文章
写在前面的话 这一篇权当做求职的入门初级读物,或许对于已经过了这个阶段的朋友来说浅显了一点。 1.如果你觉得这个世界太黑暗,你的一切不幸都是外界原因造成的,如果你觉得一切都不公平,那么这篇文章不适合你,这篇文章适合那些对于生活还有希望,并且能够面临最惨痛的失败仍不泯灭那一点希望的人。 2.如果你想不劳而获,你觉得通过什么样
轻松
快速的手段或者什么立竿见影的窍门就能够获得高薪高福利,这篇文章
23岁的一无所有,其实是理所应当的
23 岁那年你正处在哪个状态?现在呢? 我,23岁,应届毕业生。生活,工作,爱情都处于人生的低谷,一穷二白,一无所有,一事无成。
分
享
一下
成长的建议吧。 匿名用户 23岁那年...就是去年...... 在22岁的时候我毕业,同时第二年准备考研,结果因为压力太大,期望太高,又失利了,但是我依然满怀信心和憧憬 在我23岁那年四月,当我深爱的女孩(在这之前我追了她四年)说她要去北
如果你也23岁
分
享
一下
这篇文章: 23 岁那年你正处在哪个状态?现在呢? 我,23岁,应届毕业生。生活,工作,爱情都处于人生的低谷,一穷二白,一无所有,一事无成。
分
享
一下
成长的建议吧。 匿名用户 23岁那年...就是去年...... 在22岁的时候我毕业,同时第二年准备考研,结果因为压力太大,期望太高,又失利了,但是我依然满怀信心和憧憬 在我23岁那年四月,当我深爱的女孩(在这之
C语言
70,021
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章