1.静态数据成员
include <iostream>
class Myclass{ public: Myclass(int a,int b,int c); void GetSum();private: int a,b,c; static int Sum;//声明静态数据成员};int Myclass::Sum=0;//定义并初始化静态数据成员Myclass::Myclass(int a,int b,int c)
{ this->a=a; this->b=b; this->c=c; Sum+=a+b+c;}void Myclass::GetSum()
{ std::cout<<"Sum="<<Sum<<std::endl;}int main(){
Myclass M(1,2,3); M.GetSum(); Myclass N(4,5,6); N.GetSum(); M.GetSum();return 0;}输出为:Sum=6
Sum=21Sum=21 静态数据成员被当作是类的成员。无论这个类的对象被定义了多少个,静态数据成员在程序中也只有一份拷贝,由该类型的所有对象共享访问。也就是说,静态数据成员是该类的所有对象所共有的。对该类的多个对象来说,静态数据成员只分配一次内存,供所有对象共用。Static成员变量的初始话是在类外,此时不能再带上static的关键字。
类的静态数据成员有两种访问形式:
<类对象名>.<静态数据成员名> 或 <类类型名>::<静态数据成员名>静态数据成员主要用在各个对象都有相同的某项属性的时候。
2 静态成员函数
出现在类体外的函数定义,不能指定关键字static;
静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数;
静态成员函数不能访问非静态成员函数和非静态数据成员;
调用静态成员函数,可以用成员访问操作符(.)和(->)为一个类的对象或指向类对象的指针调用静态成员函数,也可以直接使用如下格式:
<类名>::<静态成员函数名>