#include <iostream> #include "math.h" using namespace std; // static数据成员: 如果不是const类型的static,类内声明但不能初始化,需要类外定义。 // const类型可以类内声明和初始化,但如果初始化,不能再改其值,如果不初始化, // 则需要在类外用作用域符引用而初始化。 // By Evel class A { public: A(int a){a2=a;} const static int a3; //声明和初始化与否均可 static int a1; //声明OK void get(); static void set(); //声明静态成员函数 private: int t1; static int a2; const static int a4=9; }; int A::a2=89; //static定义在外面 int A::a1=0; const int A::a3=90; //公开的静态成员a3定义;static要去掉 //const int A::a4=7;//已经定义过的私有静态成员a4就不能再重新定义,这是const的属性决定 void A::get() //普通成员函数对静态成员的引用 { cout << "static member a2 si " << a2 << endl; //直接引用即可 cout << "const static member a4 is "<< a4 << endl; } void A::set() //静态成员函数定义 { cout << a2 << endl; cout << a4 << endl; //cout << t1 << endl 不能访问非静态成员 } void main() { A a(63); a.get(); }