一、简介
静态数据成员是类的所有对象中共享的成员,它不属于任何对象,不会随对象的建立而产生,也不因对象的析构而删除。使用静态数据成员可以实现多个对象间的数据共享,因此可以节省内存。与一般数据成员一相,定义为私有的静态数据成员不能由外界访问。
二、使用方法
1.定义与一般数据成员相似,但前面要加上static关键词。
2.初始化与一般数据成员不同,静态数据成员初始化的格式为:<类型> <类名>::<静态数据成员>=<值>。
3.初始化时不加成员的访问权控制符privatte,public等 。
4.初始化时使用域运算符来标明它所属的类,这也说明静态数据成员是类的成员,而不是对象的成员。
5.静态数据成员是静态存储的,它是静态生存周期,必须对它进行初始化且不能在构造函数中进行。
6.引用静态数据成员格式:<类名>::<静态成员名>
三、例子
#include <iostream> using namespace std;
class Myclass { public: Myclass(int a, int b, int c); ~Myclass(){ cout<<"deconstruct.."<<endl;} void GetNumber(); void GetSum(); private: int A, B, C; static int Sum; //静态数据成员声明 };
int Myclass::Sum = 0; //静态数据成员初始化
Myclass::Myclass(int a, int b, int c) //构造函数实现 { A = a; B = b; C = c; Sum+= A + B +C; cout<<"construct.."<<endl; }
void Myclass::GetNumber() { cout<<"Number="<<A<<","<<B<<","<<C<<endl; }
void Myclass::GetSum() { cout<<"Sum="<<Sum<<endl; }
int main() { //第一种情况,一次性定义 Myclass m(1,5,8),n(2,4,6); m.GetNumber(); n.GetNumber(); m.GetSum(); //输出26 n.GetSum(); //输出 26
//*第二种情况,分步定义 //Myclass m(1,5,8); //m.GetNumber(); //m.GetSum(); //输出 12 //Myclass n(2,4,6); //n.GetNumber(); //n.GetSum(); //输出26 return 0; }
|
阅读(1733) | 评论(0) | 转发(0) |