C++ 类中静态成员
来源:互联网 发布:钉钉绑定阿里云邮箱 编辑:程序博客网 时间:2024/06/06 03:29
前几天参加了一个电话面试,说起C++中静态成员的使用,顿时懵了。。。我目前所在的公司主要是C编程,只知道C静态函数只能在本文
件内调用。C静态局部变量在函数体内定义声明使用,但其生存期为整个源程序(即函数体调用结束后,静态变量还是继续存在,但是不能再
使用它);C静态全局变量在源文件内定义使用,其生存期同样为整个源程序,而且只能在源文件内部使用,其他源文件不能对它使用extern
声明。即,C静态局部变量改变了普通局部变量的生存期,C静态全局变量改变了普通全局变量的作用域。
C++ 中的静态成员除了上述C所说的,还有其特有的,就是C++ 类中的静态数据成员。C++类中静态数据成员的pulic/private/protect
属性与普通成员一样,只不过它是类域中中的全局变量。因为它要比任何普通的成员变量都要先初始化,即类的对象没有生成,我都可以访问
它,所以,它的初始化不能放在类的定义中。例:
class Base {
private:
static const int udwi;
};
const int Base:: udwi = 1; //初始化无需加static关键字,不受private protected限制。
因为它是全局变量,所以该类的所有对象,包括该类派生类的所有对象,都共享一个共同的存储空间(记忆性)。
静态数据成员可以成为成员函数的可选参数(有实际意义吗?没想通)。
静态数据成员类型可以是所属类的类型,而普通数据成员只能声明为所属类类型的指针或引用(不知道实际意义)
关于C++ 中类的静态成员函数,只能访问类的静态成员变量,而不能访问类中的普通成员变量,它的意义在于类中的静态成员函数是跟类绑
定在一起的,对于用户来说,这个类的静态函数是和这个类相关的。(在类设计中,不应该把所有的逻辑当成类的成员函数来实现)。
任何类的成员函数,它都有一个隐藏的参数,就是一个指向自己的THIS指针,但是静态的成员函数没有这个隐藏的参数,这样就是为什么
类的的静态成员函数不能访问类中的非静态成员变量的原因。。。这也是为甚么静态成员函数能够回调函数的原因。。。。
- C++/Java__中类模板中的静态成员变量和静态成员函数
- C语言中实现C++静态类成员变量
- C++---类中的静态成员
- C++:静态类成员函数
- 【C++】类的静态成员
- c语言中静态成员的使用
- C++ 类中静态成员
- objective-c 类和对象中静态数据成员和静态成员函数(类方法)详解
- static 静态成员变量 静态成员函数 类中使用
- C++:类的静态类成员
- 类静态成员static(C++)
- c++primer 12.6 静态类成员
- 类静态成员static(C++)
- objective-c没有类静态成员变量
- 【C++】类的静态数据成员
- 【c++】类的静态成员函数
- Objective-C类的静态数据成员
- 【C++】C++类的静态成员
- S3C2440裸机学习- LCD驱动原理及代码分析[二]
- 风雨20年:我所积累的20条编程经验
- SQL Server中如何备份到异机
- vc动态曲线绘制方法
- vc2005中_tchar的字符串比较
- C++ 类中静态成员
- 大端(Big Endian)与小端(Little Endian)详解
- 从字符串中提取全部的数字并组成新字符串
- inverset="true" 详细解释
- C#中复杂控件的序列化
- 算法分析(简介)
- 单片机C语言函数之中断函数(中断服务程序)
- 学习Struts时遇到的错误,及解决方法
- 凌阳教育四个月就业班的培训课程大纲