| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2082 人关注过本帖
标题:为何答案是14?求问大神!
只看楼主 加入收藏
蛤蟆001
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2016-9-2
结帖率:70%
收藏
已结贴  问题点数:9 回复次数:6 
为何答案是14?求问大神!
#include<iostream.h>
class TestClass
{ public:
  TestClass (){val++;}
  static int val;
};
int TestClass::val=0;
void main()
{ TestClass cs1;
  cout<<cs1.val<<"";
  TestClass cs2;
  TestClass cs3,cs4;
  cout<<cs2.val<<endl;
搜索更多相关主题的帖子: public 
2016-09-17 00:24
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:3 
不是1和4的话,你认为是几呢?
2016-09-17 11:14
反脑控2016
Rank: 4
等 级:业余侠客
威 望:2
帖 子:108
专家分:212
注 册:2016-9-2
收藏
得分:3 
答案是14没错
对象空间内,不包含静态数据成员空间,静态数据成员所占空间不会随着对象的产生而分配,或随着对象的消失而回收。
对于包含静态数据成员的类来说,不管是建立还是不建立此类的对象,还是建立很多这个类的对象,这个类的静态数据成员是唯一存在的,这个类的所有对象共享这个静态数据成员。

我学编程,总爱用自己的语言将所学的东西描述下来,渐渐的,一篇篇的文章,看起来像一个个杰作。
2016-09-18 22:00
鸿蒙之灵
Rank: 4
来 自:异次元裂缝
等 级:贵宾
威 望:11
帖 子:126
专家分:244
注 册:2016-8-22
收藏
得分:3 
程序代码:
#include<iostream.h>
class TestClass
{ public:
  TestClass (){val++;}   //构造函数
  static int val;      //静态成员变量,此处没有赋值,也就没有初始化
};
int TestClass::val=0; 
void main()
{ TestClass cs1;     //构造函数第一次调用,val的值自增为1
  cout<<cs1.val<<"";
  TestClass cs2;     //构造函数第二次调用,val的值由前面的1自增为2
  TestClass cs3,cs4;   //第三次调用,val=3,   cs4对象的创建使构造函数进行了第四次调用,val=4
  cout<<cs2.val<<endl;   //因为val为TestClass类的静态成员变量,所以,在这里无论输出cs1.val ,还是输出cs3.val 结果都是4

以上是运行的过程注释,具体原因楼上说的很清楚,我不知道你看懂了没有

对待编程,要像对待情人一样
2016-09-18 22:56
落魄小书生
Rank: 1
等 级:新手上路
帖 子:1
专家分:3
注 册:2016-9-19
收藏
得分:3 
楼主打断点跟踪一下自己就明白了
2016-09-19 20:24
蛤蟆001
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2016-9-2
收藏
得分:0 
回复 4楼 鸿蒙之灵
谢谢谢谢谢谢~
2016-09-21 11:24
StadyC
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:182
专家分:430
注 册:2016-10-13
收藏
得分:0 
一次定义调用一次构造函数,你说呢
2016-10-14 10:49
快速回复:为何答案是14?求问大神!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019394 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved