社区
C++ 语言
帖子详情
[转贴]为什么输出不是0?
nriet8357
2004-07-31 08:29:40
class CLS
{
public:
int m_i;
CLS( int i ) {m_i = i;}
CLS()
{
CLS(0);
}
};
int main(int argc, char* argv[])
{
CLS obj;
cout << obj.m_i << endl;
}
为什么输出不是0呢??
----转自南大小百合*CPlusPlus版----
...全文
172
17
打赏
收藏
[转贴]为什么输出不是0?
class CLS { public: int m_i; CLS( int i ) {m_i = i;} CLS() { CLS(0); } }; int main(int argc, char* argv[]) { CLS obj; cout << obj.m_i << endl; } 为什么输出不是0呢?? ----转自南大小百合*CPlusPlus版----
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sunjx119
2004-08-02
打赏
举报
回复
CLS()
{
CLS(0);
}
----------------------------
构造函数递归个没完,怎么会有正确的答案呢?
tatbaby
2004-08-01
打赏
举报
回复
可以结贴了
steel007
2004-07-31
打赏
举报
回复
楼主是从java转过来的吧?
java中可以支持在一个构造函数中调用另一个构造函数,但是C++中不支持,导致了完全不同的语义。
yesdo
2004-07-31
打赏
举报
回复
呵呵,恩,这问题好。我发现来多了这里,总有一天要怀疑1+1=2是不是真的。
CLS()
{
CLS(0);//问题错在这,等于重新建造了个cls对象,其实直接用m_i=0代替就可以
// 了!
}
beyondtkl
2004-07-31
打赏
举报
回复
楼上的兄弟,也就是说
CLS()
{
CLS(0);
}
又构造了一个对象,这个对象的m_i等于0,而obj这个对象的m_i没有被构造,仍然是随机数,
不知这个理解对不对??
// 对.
venus1982518
2004-07-31
打赏
举报
回复
CLS( int i ) {m_i = i;}
CLS()
{
CLS(0);
}
这两个有关系么?怎么会是0呢?本来就是随机数。
北极猩猩
2004-07-31
打赏
举报
回复
按照搂住的意思,默认构造函数应该这样写
CLS():CLS(0){}
RookieStar
2004-07-31
打赏
举报
回复
CLS()
{
CLS(0); // 栈内存上分配的局部变量,与*this无关,作用域仅局限于该non-argu构造函数中。
}
conquers
2004-07-31
打赏
举报
回复
楼上的兄弟,也就是说
CLS()
{
CLS(0);
}
又构造了一个对象,这个对象的m_i等于0,而obj这个对象的m_i没有被构造,仍然是随机数,
不知这个理解对不对??
tatbaby
2004-07-31
打赏
举报
回复
调用CLS()构造函数产生了一个类的临时对象,并对其初始化,但并不对调用构造函数的对象初始化
所以
class CLS
{
public:
int m_i;
CLS( int i )
{ init(i); //m_i = i;
}
CLS()
{
init(0);
//CLS(0);
}
private:
void init(int i){ m_i=i;}
};
Dong
2004-07-31
打赏
举报
回复
上面所说的i都要改为m_i
renheihei
2004-07-31
打赏
举报
回复
刚才调试过了,输出的随机数!
Dong
2004-07-31
打赏
举报
回复
CLS()
{
CLS(0);
}
错就错在这里啦。
因为没有参数的构造函数里是构造另一个对象的,而“本身”的对象成员i是没有被初始化的,而i在对象的构造中是随机被初始化,所以对于不同的编译起i的结果会是不同的。你这样还浪费空间。
必须这样的
CLS()
{
i=0;
}
yeyu170
2004-07-31
打赏
举报
回复
我这里没有编译器,但我感觉输出应该是0。
上面是类的重载,在声明obj对象时没有加参数,调用的应该是第二构造函数。
xrhone
2004-07-31
打赏
举报
回复
也可以说成是CSL(0)运行完这个函数后就被自动析构了吧。
hellwolf
2004-07-31
打赏
举报
回复
第一次见过这种语法,哈哈
nriet8357
2004-07-31
打赏
举报
回复
原来如此,谢谢各位捧场!
O-Blog 2.6
留言/搜索间隔时间可以设为0而不限制 超级管理员可以指派日志的作者 改变: 更换编辑器的截断按扭 添加新的分类/连接时,默认排序在最后 更改分页样式 归档改成中文的 在首页上最新评论的 title 属性中,只...
什么是makefile?(
转贴
整理)
...或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器
[
转贴
]分贝是个什么东西?(好东东)
别紧张嘛~看你激动的,高手其实也没什么了不起的……不信?那我问问你几个问题,你答得上来,算你了不起!我们用电脑做音乐的时候,经常会接触到各种各样的表,无论是测量什么的表,它们都离不开一个单位——分贝...
转贴
:c++格式化输入
输出
c++格式化输入
输出
cin与cout 一:标准输入函数cin 不知道说它是个函数对还是不对,它是代表标准的输入设备--键盘。他是属于流的,他的用法和流的用法是一样的。也就是:cin>>变量;小小的说明一下,输入多个变量...
[
转贴
] 你会用sizeof吗?(vc篇) kernelhao(原作)
[
转贴
] 你会用sizeof吗?(vc篇) kernelhao(原作) 发表:2004-4-9 11:55:52 出处:你的博客网(yourblog.org) 本文主要包括二个部分,第一部分重点介绍在VC中,怎么样采用sizeof来求结构的大小,以及容易出现的...
C++ 语言
64,282
社区成员
250,469
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章