标题:为什么无论sumnum的值是多少,程序一直输出50
只看楼主
孤狼A组
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:73
专家分:121
注 册:2015-9-8
结帖率:77.78%
已结贴  问题点数:20 回复次数:5 
为什么无论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
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
得分:10 
程序代码:
#include<iostream>
using namespace std;
class Book
{public:
    Book(int w);
    int sumnum;
    void display();
private:
    int num;
};
Book::Book(int w)
{
  num=w;
  sumnum=120;
  sumnum-=w;
}
void Book::display()
{
      cout<<sumnum<<endl;
}
int main()
{
  Book b1(20);
  Book b2(70);
  b1.display();
  b2.display();


  return 0;

}

把静态字符删掉就可以了,我也不知道原因,楼主弄清楚了可以告诉我一下
2015-11-15 14:28
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
不知道楼主想干什么,叫人如何回答?
2015-11-16 08:27
孤狼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
a853052879
Rank: 2
等 级:论坛游民
帖 子:39
专家分:10
注 册:2015-8-17
得分:0 
回复 楼主 孤狼A组
在C++中,静态成员函数的初始化,是在类外进行的

清风无泪
2015-11-17 23:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-459225-1-1.html




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

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