类中的静态成员小总结
来源:互联网 发布:淘宝爆款打造教程 编辑:程序博客网 时间:2024/06/08 19:35
因为一个疑问:静态成员函数不能被对象调用?静态成员函数应该是既可以通过类名直接调用,也可以通过对象名进行调用。还有一个疑问就是:私有的静态成员变量在类外使用是否影响了封装性?这个答案应该是静态成员变量不能在类外使用只是在类外初始化。因为疑问引发了对类中静态是怎么使用的,各对象如何调用的思考。
使用静态成员在类加载的时候就会分配内存存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问。每一个对象会共享静态成员,对多个对象来说,静态成员只存储一处,供所有对象共用。静态成员的值对每个对象都是一样,但它的值是可以更新的。所以在定义完类之后需要对静态成员初始化,只要对静态成员的初始化一次,之后所有对象都可以共享使用,值会不断更新(有点像操作系统中共用一个缓存)。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则,在初始化的时候在类外进行,不加关键字static以免和一般的静态变量混淆,加上类的作用域符,不加访问权限符:public,private,protect。
class base{
private:
static int m_i;//正确,静态数据成员
static void tes(int a)
{
cout << a;
}
};
int base::m_i = 2;
上述代码定义了一个静态成员变量m_i,初始化在类外,但是在类外调用的时候编译不能通过,可见静态成员变量不能在类外使用而只是在类外初始化而已。
对于静态成员函数,其与非静态成员函数之间的重大区别就是他不含this指针,所以无法直接访问自己类的非静态成员,要想访问,可以通过对象引用。静态成员函数可以通过类直接引用,也可以通过对象来引用,遵循访问权限符:public,private,protect。调用上述代码中的tes函数,可以在其他的成员函数中通过base p;p.tes(4)调用,也可以通过base::tes(4);(上述tes函数是私有)
Mark 2015,12,24
- 类中的静态成员小总结
- c++类中的静态成员函数总结
- 静态类,静态成员 总结
- c++中的静态成员小析
- 类中的三种函数(普通成员函数、静态成员函数、COSNT成员函数)总结
- 【转】类静态成员总结
- C++类静态成员总结
- C++类静态成员总结
- C++ 类中的静态成员
- C++类中的静态成员
- C++类中的静态成员
- C++---类中的静态成员
- C++类中的静态成员
- 类中的静态成员函数
- 类中的静态数据成员
- C++ 类中的静态成员
- C++类中的静态成员
- 派生类中的静态成员
- android 链接 javascript
- NSTimer 知识点记录
- win7 下ffmpeg release 版本崩溃问题
- Java NIO学习笔记之二-图解ByteBuffer
- 定时自动执行SQL存储过程(图文详解)
- 类中的静态成员小总结
- 抽象类与接口的区别:
- 137,单例模式
- 兄弟连猿代码less css 视频教程学习平台
- Android ActionBar
- Java NIO系列教程(三) Buffer
- 招聘高级软件经理
- 写好JAVA代码的30条经验
- 使用ffmpeg将视频解析为YUV420