猿问

如果规定该程序的主函数和类CStudent中的成员变量的属性不允许改变,应该如何改正该程序?

#include <iostream.h>
#include <string.h>

class CStudent
{
public:
CStudent(char *n, int a);
~CStudent();

static void SetAge(int age);

private:
char *name;
int age;
static int nTotalObj;
};

int CStudent::nTotalObj = 0;

CStudent::CStudent(char *n, int a)
:age(a)
{
int nLen = strlen(n);
name = new char[nLen+1];
strcpy(name,n);
name[nLen] = ’\0’;

nTotalObj++;
}
CStudent::~CStudent()
{
delete[] name;

nTotalObj--;
}

void CStudent::SetAge(int age)
{
this->age = age;
}

void main()
{
CStudent stu1("张三",25);
CStudent str2("李四",26);
cout<<"CStudent::nTotalObj="<<CStudent::nTotalObj<<endl;
}


Devil10
浏览 1934回答 1
1回答

asd8532

使用静态成员函数的目的就是使这个函数成为“类”级别的,而不是“对象级别”的,实际上相当于必须通过这个类使用的全局函数,是不属于任何对象的,如果你感觉一个静态成员函数需要处理对象,那么很可能是应该把它定义为成员函数。静态成员函数不能调用普通成员函数和使用普通成员变量。void CStudent::SetAge(int age){this->age = age;}这个就不行
随时随地看视频慕课网APP
我要回答