社区
C语言
帖子详情
轻松了。放点分,随便来吵一下架,刺激一下。
earthharp
2003-01-13 06:02:18
你是否认为C++中如下的初始化语法具有二义性:
class Base
{};
int main()
{
Base base = Base();
}
:D
...全文
43
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)
同居的童话
分
享
一下
我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。
分
享知识,造福人民,实现我们中华民族伟大复兴! (一)从公交车上下来,
求职的一篇文章
写在前面的话 这一篇权当做求职的入门初级读物,或许对于已经过了这个阶段的朋友来说浅显了一点。 1.如果你觉得这个世界太黑暗,你的一切不幸都是外界原因造成的,如果你觉得一切都不公平,那么这篇文章不适合你,这篇文章适合那些对于生活还有希望,并且能够面临最惨痛的失败仍不泯灭那一点希望的人。 2.如果你想不劳而获,你觉得通过什么样
轻松
快速的手段或者什么立竿见影的窍门就能够获得高薪高福利,这篇文章
如果你也23岁
分
享
一下
这篇文章: 23 岁那年你正处在哪个状态?现在呢? 我,23岁,应届毕业生。生活,工作,爱情都处于人生的低谷,一穷二白,一无所有,一事无成。
分
享
一下
成长的建议吧。 匿名用户 23岁那年...就是去年...... 在22岁的时候我毕业,同时第二年准备考研,结果因为压力太大,期望太高,又失利了,但是我依然满怀信心和憧憬 在我23岁那年四月,当我深爱的女孩(在这之
刘墉写给女儿的忠告
跨一步,就成功 作者:刘墉 刘墉以跟女儿交谈的方式深入探讨处世、使用时间、运动、写作、记忆等问题,更可贵的是他提出了许多切实可行的方法。他谈得非常具体,具体到怎样跟男生打交道、什么时间做什么事情、怎样写好一篇游记、怎样记一个单词等细微问题。他所说的每一种方法我们都能做得到,具有很强的现实操作性。刘墉娓娓道来,妙语连珠,让我们在
轻松
愉快的阅读中学习到许多简易有效的学习窍门和方法。这些窍门能起到“点...
美式地道口语
美式地道口语(一):How come? Hello folks: 想要用英文展现
一下
你的幽默感, 但却苦无机会吗? 下面的数据都是我从网上找来的(原作者不要打我!), 提供大家很好的题材.How Come A man will pay $2 for a $1 item he wants. A woman will pay $1 for a $2 item that she doesn't wa...
C语言
69,382
社区成员
243,074
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章