c++静态成员变量的使用
来源:互联网 发布:网络专接本 编辑:程序博客网 时间:2024/05/20 04:51
通常使用时,静态成员变量像普通成员变量一样在头文件中声明,比如static int i;但是因为静态成员变量属于类本身,不属于任何一个对象,所以初始化不能在构造函数或初始化成员列表中,只能在cpp的开头,用int A::i=0;(A为类的名称)。
总结其所有特性如下:
1.静态数据成员的定义。
静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。
其定义方式与全局变量相同。举例如下:
xxx.h文件
class base{
private:
static const int _i;//声明,标准c++支持有序类型在类体中初始化,但vc6不支持。
};
xxx.cpp文件
const int base::_i=10;//定义(初始化)时不受private和protected访问限制.
注:不要试图在头文件中定义(初始化)静态数据成员。在大多数的情况下,这样做会引起重复定义这样的错误。即使加上#ifndef #define #endif或者#pragma once也不行。
2.静态数据成员被 类 的所有对象所共享,包括该类派生类的对象。即派生类对象与基类对象共享基类的静态数据成员。举例如下:
class base{
public :
static int _num;//声明
};
int base::_num=0;//静态数据成员的真正定义
class derived:public base{
};
main()
{
base a;
derived b;
a._num++;
cout<<"base class static data number _num is"<<a._num<<endl;
b._num++;
cout<<"derived class static data number _num is"<<b._num<<endl;
}
// 结果为1,2;可见派生类与基类共用一个静态数据成员。
3.静态数据成员可以成为成员函数的可选参数,而普通数据成员则不可以。举例如下:
class base{
public :
static int _staticVar;
int _var;
void foo1(int i=_staticVar);//正确,_staticVar为静态数据成员
void foo2(int i=_var);//错误,_var为普通数据成员
};
- c++:静态成员变量和静态成员函数使用问题
- 【C++】类的静态成员函数和静态成员变量的使用
- c++--静态成员变量
- 静态成员变量和静态成员函数的使用
- 静态成员变量及方法的使用
- c++静态成员变量的使用
- 类静态成员变量的使用
- JAVA中静态成员变量的使用
- C++静态成员变量和静态方法的使用
- C++ 静态成员函数 静态成员变量 常成员函数之前的使用
- 类的 静态成员 --- 静态成员变量 、 静态成员函数
- c语言中静态成员的使用
- 类的静态成员函数和静态成员变量的使用
- 类的静态成员变量和静态成员函数的使用
- 类的静态成员函数和静态成员变量的使用
- 类的静态成员函数和静态成员变量的使用
- 类的静态成员函数和静态成员变量的使用
- 类的静态成员函数和静态成员变量的使用
- 深度探索c++对象模型(一)_关于对象
- U盘系列 之U盘挂载信息的获取
- Git 远程协作
- 插入数据库数据时出现ORA-00911: 无效字符问题,
- AngularJS简介
- c++静态成员变量的使用
- hiveContext演示
- android获取SIM卡状态
- Netty4学习笔记(9)-- Channel状态转换
- cocos2d-x 3.4 横板射击游戏之地图滚动实现(封装方式)
- JAVA学习11_Java注解Annotation详解
- zepto和jquery的区别,zepto的不同使用8条小结
- poj--2251
- android 离线SDK 国内镜像