C++ static类成员
来源:互联网 发布:淘宝买二手苹果6 编辑:程序博客网 时间:2024/05/17 06:23
使用类静态成员(static)的必要性:
a、在程序的任意点需要统计已创建的特定类类型对象的数量。
b、全局独享可能是指向类的错误处理例程的一个指针,或者,它是指向类类型对象的内存自由存储区的一个指针。
使用static成员而不是全局对象的三个优点:
(1)static成员的名字是在类的作用域中,因此可以避免与其他类的成员或者全局对象名字冲突。
(2)可以实施封装。static成员可以是私有成员,而全局对象不可以。
(3)通过阅读程序容易看出static成员是与特定类关联的。这种可见性可清晰地显示程序员的意图。
static成员是类的组成部分但不是任何对象的组成部分,因此,static成员函数没有this指针。通过使用非static成员显示或者隐式的引用this是一个编译的错误。因为static成员不是任何对象的组成部分,所以static成员函数不能被声明为const,static成员函数也不能声明为虚函数。
static数据成员可以声明为任何类型,可以是常量、引用、数组、类类型。static数据成员必须在类定义体的外部定义(正好一次),不像普通数据成员,static成员不是通过类构造函数进行初始化,而是应该在定义时进行初始化。static关键字只能用于类定义体内部的声明,定义不能标示为static。
一般而言,类的static成员,像普通数据成员一样,不能在类的定义体中初始化,相反,static数据成员通常在定义时才初始化。有一个例外,整形const static数据成员可以在类的定义体中进行初始化,只是该数据成员仍需在类的定义体外进行定义。
继承和静态成员
如果基类定义了static成员,则整个继承层次中只有一个这样的成员,无论基类派生出多少个派生类,每个static成员只有一个实例。
static成员遵循常规访问控制:如果成员在基类中为private,则派生类不能访问它。假如可以访问,则即可以通过基类访问static成员,也可以通过派生类访问static成员。一般而言,既可以使用作用域操作符也可以使用点或者箭头成员访问操作符。
本文来自《C++ primer》整理
- static c ,C++类static 成员变量
- static c ,C++类static 成员变量
- static C,C++类static 成员变量
- c++-类的static成员
- C++:类内static成员
- static类成员(C++)
- C++static类成员,static类成员函数
- 【C/C++】类中的const成员 static成员
- 【C/C++】类中的static成员、static const成员和const成员
- 类静态成员static(C++)
- 类静态成员static(C++)
- c/c++ 类的static成员
- [C++]static成员变量
- C++static 数据成员
- c++static数据成员和成员函数
- C/C++的static成员
- C++static静态数据成员
- C++static静态成员函数
- [Android] Android中动态添加Panel的框架代码
- VB、VC调用C++dll 函数、变量、类
- Oracle RMAN的show,list,crosscheck,delete
- 同一文件夹的不同工程的编译问题
- linux rm删除文件原理
- C++ static类成员
- 数据访问工厂 加上 泛型 的实现
- 结果集(ResultSet)用法
- Windows下使用标准Shell接口遍历文件和文件夹(1)
- Web应用界面设计规范—给项目组培训
- Android实现XML解析技术
- 改装Juploader上传组件,使其可以控制自由上传
- socket 通信
- 软件开发工具知识点一览图