类之静态成员以及常对象、常成员
一、静态成员:static修饰,每个类只有一份拷贝,为所有该类的对象所共用。
1.静态数据成员:
类内声明、类外初始化。和全局变量一样,在数据段里分配内存。
eg:
class A{
static int co;
};
int A::co=0;
2.静态成员函数:
1).静态成员函数专门用来存取类的静态成员,不可访问非静态成员,不可调用非静态成员函数,没有this指针。由static在类内声明,可以在类外定义,此时不需要static作为前缀。
eg:
class A{
static int co;
static int getCo() { return co; }
}
2).静态成员函数可以通过类名直接调用,也可以通过对象来调用。格式为:类名::静态成员函数; 对象.静态成员函数。
二、常对象与常成员:const
1.常对象:必须在定义时由构造函数初始化,只能调用常成员函数,且只能被常成员函数访问,生存期内不允许被修改。
定义格式:类型 const 对象名;或者 const 类型 对象名。
2.常数据成员:必须在构造函数的初始化列表里初始化,生存期内不允许被修改。
定义格式:类型 const 数据成员名; 或者 const 类型 数据成员名。
3.常成员函数:不能更新对象的数据成员(但可以访问),不能调用类中非常成员函数,在函数声明以及定义的时候都必须加上const关键字。
定义格式:返回类型 成员函数名 (参数表) const。
eg:
class A{
int x;
int day() const;
}
int A::day() const
{
return x;
}
另外,const可用于函数重载。
eg:void print()与void print() const这两个函数可以重载。