首页 > 代码库 > 类之静态成员以及常对象、常成员

类之静态成员以及常对象、常成员

一、静态成员: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这两个函数可以重载。

类之静态成员以及常对象、常成员