类中的static成员在类定义完毕之后就存在在静态数据区,即使没有定义任何该类的对象。
#include
using namespace std;
typedef int LENGTH;
class Test
{
typedef float LENGTH;
public:
void set(LENGTH x){_val = x;}
LENGTH get(){return _val;}
static int getT() {cout << &Test::t << endl;return t;}
private:
//typedef float LENGTH;
LENGTH _val;
static int t;
};
int Test::t = 10;
Test func()
{
Test a;
cout << "Call func..." << endl;
return a;
}
//此处由于静态数据成员t是private,因此定义了一个静态成员函数getT取得t的值
int main()
{
Test obj1;
cout << obj1.getT() << endl; //利用类的对象访问静态数据成员
cout << Test::getT() << endl; //通过类作用域来访问
Test *p = &obj1;
cout << p->getT() << endl; //使用类的指针来访问
Test *p2;
cout << p2->getT() << endl;
//Test obj2 = func();
cout << func().getT() << endl; //利用函数返回值对象来访问
return 0;
}
上述代码执行结果为: