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也会改变呢? 展开
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也会改变呢? 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询