欢迎光临
梦想从学习开始!

C++静态成员变量的特性总结及测试用例| 小熊测试

本文主要介绍 C++静态成员变量的特性总结及测试用例| 小熊测试,小熊希望对大家的学习或者工作具有一定的参考学习价值,在测试领域有所提升和发展。

  静态成员变量存放于数据段,在编译时产生,故有以下特性:

  静态成员变量实际为类域中的全局变量,其初始化也应与全局变量一样,不能再头文件里初始化,应与全局变量初始化的方式一样,初始化时,静态成员变量不收访问限定符限定

  Test.cpp:

  class A

  {

  static int _num;

  };

  int A::_num = 0;//初始化成功

  静态成员变量被类内所有成员变量共享,也被派生类所有成员变量共享

class B :public A

{

};

int main()

{

A a;

a._num++;

B b;

b._num++;

cout << "b._num:" << b._num << endl;

cout << "a._num:" << a._num << endl;

return 0;

}

  静态成员变量具有常量性,可以成为成员类的可选参数,普通成员变量不具有常量性,所以不能作为成员函数的可选参数

class B :public A

{

public:

void fun(int a = _num)//正确

{

}

void fun1(int a = num)//报错

{

}

private:

int num;

};

  静态成员变量可以声明为所属类类型,铺同成员变量不可以声明为所属类类型,只能声明为所属类类型的引用与指针(节点就是这么来的)

class B :public A

{

public:

void fun(int a = _num)//正确

{

}

void fun1(int a = num)//报错

{

}

private:

int num;

static B _bclass;//正确

B _b1class;//错误

B* _bclassptr;//正确,为一指针

B &_b2class;//错误,为一引用

};

  由于静态成员变量定义不在类体内,所以静态数据成员的值在const成员函数中可以被合法的改变。

class A

{

public:

static int _num;

};

int A::_num = 0;//初始化成功

class B :public A

{

public:

void fun()const

{

_num++;//正确,const函数可以改变静态成员变量

}

private:

int num;

};

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小熊分享邦(www.xxfxb.com),希望大家能坚持软件测试之路,谢谢。

赞(0) 打赏
未经允许不得转载:小熊分享邦 » C++静态成员变量的特性总结及测试用例| 小熊测试

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏