分析:第一行 count=0; 所以我们在类外实现cout的初始化(注意静态成员在类外实现初始化不需要使用关键字static)使用域解析符即可。
int student::count = 0;
由运行结果可知:
在无参构造函数中初始化name=“noname",初始化age=0;
故在类外初始化无参构造函数为:
student::student()
{
age = 0;
name = "noname";
count++;
}
故最终代码为:
#include<iostream>
#include<string>
using namespace std;
class student {
private:
int age;
string name;
public:
student(int m, string n);
student();
static int count;
~student();
void print()const;
};
int student::count = 0;
student::student()
{
age = 0;
name = "noname";
count++;
}
student::student(int m, string n)
{
age = m;
name = n;
count++;
}
student::~student()
{
count--;
}
void student::print() const
{
cout << "name=" << student::name << ",age=" << age << endl;
}
int main()
{
cout << "count=" << student::count<< endl;
student s1;
student* p = new student(23, "zhanghong");
s1.print();
p->print();
delete p;
s1.print();
student stu[4];
cout << "count=" << student::count << endl;
return 0;
}