| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 834 人关注过本帖
标题:为什么无论sumnum的值是多少,程序一直输出50
取消只看楼主 加入收藏
孤狼A组
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:73
专家分:121
注 册:2015-9-8
结帖率:77.78%
收藏
已结贴  问题点数:20 回复次数:2 
为什么无论sumnum的值是多少,程序一直输出50
#include<iostream>
using namespace std;
class Book
{public:
    Book(int w);
    static int sumnum;
    static void display();
 private:
    int num;
};
Book::Book(int w)
{
  num=w;
  sumnum=120;
  sumnum-=w;
 
}
void Book::display()
{ cout<<Book::sumnum<<endl;}
int Book::sumnum=10000;
int main()
{
  Book b1(20);
  Book b2(70);
  b1.display();
  b2.display();
 
  
  return 0;

}
搜索更多相关主题的帖子: private display public 
2015-11-15 11:48
孤狼A组
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:73
专家分:121
注 册:2015-9-8
收藏
得分:0 
回复 3楼 rjsp
我想表达的意思是,sumnum是静态变量,在赋值的时候,每次赋给它不同的值,最后输出的结果应该不一样呀。可为什么每次不同的赋值都得到相同的结果
2015-11-17 14:30
孤狼A组
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:73
专家分:121
注 册:2015-9-8
收藏
得分:0 
回复 2楼 wengbin
在类体外,对静态变量初始化了,但在构造函数里改变了,变量的值,即调用构造函数的时候,sumnum都等于120,sunnum=120-20=100,接着,又调用构造函数,sumnum被赋值为120,,sumnum=120-70=50,最后sunnum=50的值保留不释放,调用b1.display()和b2.display()时,输出最终的sumnum的值50;我把静态变量与常变量搞混了,我以为静态变量的值不允许改变。
2015-11-17 14:56
快速回复:为什么无论sumnum的值是多少,程序一直输出50
数据加载中...
 
   



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

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