一段C++的程序,大家帮忙看看为什么连接通不过?
来源:百度知道 编辑:UC知道 时间:2024/05/25 03:22:30
//xt5_7.cpp
#include <iostream.h>
class Cat{
private:
int age;
static int HowManyCats;
public:
Cat() { age=0; }
void SetHowMany(){
cout<<"Enter how many cats:";
cin>>HowManyCats;
}
void SetAge(){
cout<<"Enter the cat's age:";
cin>>age;
}
static int GetHowMany() { return HowManyCats; }
int GetAge() { return age; }
};
void main(void)
{
Cat Mimi;
Mimi.SetAge();
Mimi.SetHowMany();
Cat Huahua;
Huahua.SetAge();
Huahua.SetHowMany();
cout<<"Cat Mimi is "<<Mimi.GetAge()<<" years old."<<endl;
cout<<"Cat Huahua is "<<Huahua.GetAge()<<" year old."<<endl;
cout<<"Mimi said, there are "<<Mimi.Get
类中的静态变量得在类体外初始化,前面不要加static
class Cat{
...
};
int Cat::HowManyCats = 0;
int main()
{
...
}
静态数据成员的使用方法和注意事项如下:
1、静态数据成员在定义或说明时前面加关键字static。
2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:
<数据类型><类名>::<静态数据成员名>=<值>
这表明:
(1) 初始化在类体外进行,而前面不加static,以免与一般静态变量或对象相混淆。
(2) 初始化时不加该成员的访问权限控制符private,public等。
(3) 初始化时使用作用域运算符来标明它所属类,因此,静态数据成员是类的成员,而不是对象的成员。
3、静态数据成员是静态存储的,它是静态生存期,必须对它进行初始化。
4、引用静态数据成员时,采用如下格式:
<类名>::<静态成员名>
如果静态数据成员的访问权限允许的话(即public的成员),可在程序中,按上述格式来引用静态数据成员。
static全局变量必须定义,无论其是private或public.
应当将HowManyCats初始化,而不是等到方法SetHowMany里面才给其赋值.
将static int HowManyCats;一行改为static int HowManyCats=0;即可
补充:上面的方法有问题,的确应当在类外初始化,是我失误.