C++中static类数据成员

来源:互联网 发布:备案域名便宜 编辑:程序博客网 时间:2024/06/04 00:48

C++中static类数据成员是指以下两种: 类static成员函数 和 类static数据成员

一:使用类的static成员的优点

1:static成员的名字是在类的作用域中,因此可以避免与其他类的成员或者全局对象名字的冲突

2:可以实施封装。static成员可以是私有成员,而全局对象不可见

3:通过阅读程序容易看出来static成员与特定类关联的。

二:static成员的定义

static成员遵循正常的共有/私有访问规则,不过都可以通过 classname::成员 进行访问,不论成员是私有还是共有

三:使用类的static成员

对类的static成员的使用以下几种方式都可以 通过classname::成员 通过class对象.成员 通过class对象引用.成员

通过class对象指针->成员 不论是static成员函数还是static数据成员都可以这样使用

四:static函数没有this指针

因为static成员是类的组成部分而不是任何对象的组成部分

五:static成员的声明和定义

一般来说我们在类的作用与范围内只是声明static成员,并不进行定义

对static成员函数的声明和定义遵循以下规则

1:在类A中声明static成员get()

class A{

public:

static void get();

        };

2:对static成员函数的定义放在类的函数定义中,但是必须要去掉关键字static

static void A::get(){} //这是错误的

void A::get(){} //这是对的

对static数据成员的定义遵循以下规则

1:static数据成员在类的作用域范围内是声明,static数据成员的定义必须放在类的作用域外面

并且对static数据成员的定义要单独,不能把它放到类的某一个函数定义中去

class A{

      public:

      void set();

private:

static int n;

      };

void A::set()

      {

int A::n=10; //这是错误的

      }

/********/

int A::n=10; //这是对的,要对它单独定义

2: 对const static数据成员必须在声明是对它进行赋值,在类作用域外部对不对它在进行定义都无所谓,但提倡在定义

class A{

      public:

       const static int n=10;

      }

      const int n; //对const static数据成员的在定义

六:最重要的一点,在static成员函数中,只能使用类的static成员(包括static数据成员和static成员函数)

0 0
原创粉丝点击