类的静态成员函数带来了什么好处,应该在什么时候使用?
来源:互联网 发布:java qq2007不能 编辑:程序博客网 时间:2024/05/16 08:00
函数的行为对所有派生类都一致时,可以声明为静态。
静态成员函数的作用基本上相当于一个带有命名空间的全局函数。
如一个数学类定义了一些函数 都可以声明伪静态的 Math.sin(x)等
好处很多,但所有的好处都是基于:它跟类的实例无关,只跟类有关,不需要this指针。
至于可重入问题,非静态成员函数也有啊。为什么单单问静态函数的可重入问题。
比如:
(1)可以实现某些特殊的设计模式:如Singleton;
(2)由于没有this指针,可以把某些系统API的回调函数以静态函数的形式封装到类的内部。因为系统API的回调函数通常都是那种非成员函数(孤立函 数),没有this指针的。比如你可以在类的内部写一个线程函数供CreateThread创建线程用,如果没有静态函数,那么这种回调函数就必须定义成 全局函数(非静态成员函数指针无法转换成全局函数指针),从而影响了OO的“封装性”。
(3)可以封装某些算法,比如数学函数,如ln,sin,tan等等,这些函数本就没必要属于任何一个对象,所以从类上调用感觉更好,比如定义一个数学函数类Math,调用Math::sin(3.14);如果非要用非静态函数,那就必须:
Math
math.sin(3.14);
行是行,只是不爽:就为了一个根本无状态存储可言的数学函数还要引入一次对象的构造和一次对象的析构,当然不爽。而且既然有了对象,说不得你还得小心翼翼的定义拷贝构造函数、拷贝赋值运算符等等,对于一些纯算法的东西显然是不合适的。
(4)总之,从OOA/OOD的角度考虑,一切不需要实例化就可以有确定行为方式的函数都应该设计成静态的。
以上只是一些基本的考虑,并不是绝对的。绝对东西的只有一点:“静态函数不需要实例化就可以被调用,不会也不可以调用或操纵非静态成员”。记住这一点,那么实际编程中何时需要用,何时适合用,自然就更容易作出决定了。
- 类的静态成员函数带来了什么好处,应该在什么时候使用?
- 类的静态成员函数带来了什么好处,应该在什么时候使用?
- 类的静态成员函数带来了什么好处,应该在什么时候使用?
- 类的静态成员函数带来了什么好处,应该在什么时候使用?
- 类的静态成员函数带来了什么好处,应该在什么时候使用?
- 类的静态成员函数带来了什么好处,应该在什么时候使用?
- 什么时候应该使用索引,应该使用什么类型的索引
- 使用静态函数的好处
- 软件开发者面试百问-----什么时候使用带有静态成员的类,什么时候使用单例?
- 使用(function() {}).call(this);包裹代码有什么好处,什么时候应该这样做?
- Java中集合泛型带来了什么好处?
- 在封装的静态成员函数中使用类指针
- 使用Properties类带来的好处
- 内部类的描述/什么时候使用/以及所带来的好处
- 类成员函数参数为该类某个静态成员函数指针,需要在静态函数内使用当前实例的非静态数据成员
- 类中静态成员函数的使用
- 应该在什么时候使用Hadoop
- 应该在什么时候使用Hadoop
- RHEL5 下安装JDK
- php生成xml简单实例代码
- 使用存档数据库archive database实现Sybase ASE对象级别的恢复
- 36位数相加
- cvNorm cvNormalize()使用
- 类的静态成员函数带来了什么好处,应该在什么时候使用?
- 见识Erlang网络IO能力
- sybase12.5升级迁移到15.5步骤
- C++内联函数(Inline)
- android学习笔记16--------------Android实现网络图片与html源码获取
- 银联签名 md5
- Android-某某交易客户端-绪论
- asp控制xml数据库的6条实用代码-ASP编程教程
- iPhone/Mac Objective-C内存管理教程和原理剖析