静态成员变量存放于数据段,在编译时产生,故有以下特性:
静态成员变量实际为类域中的全局变量,其初始化也应与全局变量一样,不能再头文件里初始化,应与全局变量初始化的方式一样,初始化时,静态成员变量不收访问限定符限定
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;
};
C++静态成员变量的特性总结及测试用例
发表于:2017-01-09
作者:网络转载
来源:
 相关文章
C++实现链表的进本操作及测试用例 如何使测试用例可执行? 漫谈测试成长之探索——测试用例评审 七分钟教会你如何编写一个合格的测试用例 软件测试技术之测试用例场景法的3个例子 测试用例基础:接口测试流程及用例设计- 周排行
- 月排行
-   相机测试用例:手机、相机和摄像头测...
-   测试用例之支付功能测试点整理
-   阿里巴巴B2B测试用例编写规范
-   软件测试用例设计的基础概述
-   用单例的方法实现夜间模式
-   如果让你来测试扫码支付,你会考虑哪...
-   我所理解的测试策略——功能用例设计策略
-   相机测试用例:手机、相机和摄像头测...
-   测试用例之支付功能测试点整理
-   浅谈测试用例分级
-   嵌入式软件测试方法、案例与模板详解...
-   系统测试用例设计思路/模型
-   史上最详细的测试用例设计方法讲解
-   Python自动化测试如何自动生成测试用例?