C++中类测试出现的一个问题

/*4.定义一个Dog类,它用静态数据成员Dogs记录Dog的个体数目,静态成员函数GetDogs用来存取Dogs。设计并测试这个类。*/#include<iostrea... /*
4.定义一个Dog类,它用静态数据成员Dogs记录Dog的个体数目,静态成员函数GetDogs用来存取Dogs。设计并测试这个类。
*/

#include <iostream>
using namespace std;

class Dog
{
private:
static int dogs; //静态数据成员,记录Dog的个体数目
public:
Dog(){}

void setDogs(int a)
{
dogs = a;
}

static int getDogs()
{
return dogs;
}
};

int Dog::dogs = 25; //初始化静态数据成员

void main()
{
cout << "未定义Dog类对象之前:x = " << Dog::getDogs() << endl; //x在产生对象之前就存在,输出25

Dog a, b;
cout << "a中x:" << a.getDogs() << endl;
cout << "b中x:" << b.getDogs() << endl;
a.setDogs(360);
cout << "给对象a中的x设置值后: " << endl;
cout << "a中x:" << a.getDogs() << endl;
cout << "b中x:" << b.getDogs() << endl;
}

结果是:
未定义Dog类对象之前:x = 25
a中x:25
b中x:25
给对象a中的x设置值后:
a中x:360
b中x:360
Press any key to continue

为什么对象b中的x也会改变呢?
展开
 我来答
wanfustudio
2011-11-19 · TA获得超过1万个赞
知道大有可为答主
回答量:5513
采纳率:100%
帮助的人:3771万
展开全部
静态成员变量是所有该类对象共有的,也就是说只有一份

比如中国人这个类,数据成员钱包,自己是自己的(非静态成员),但祖国只有一个(静态成员)
13516354771
2011-11-19 · 超过17用户采纳过TA的回答
知道答主
回答量:86
采纳率:0%
帮助的人:53.1万
展开全部
因为dogs为static类型,每次赋值之后都会改变,直到下次重新赋值才发生改变
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式