C++静态函数的作用
来源:互联网 发布:词组贝多芬知乎 编辑:程序博客网 时间:2024/06/05 11:22
函数的行为对所有派生类都一致时,可以声明为静态。
静态成员函数的作用基本上相当于一个带有命名空间的全局函数。
如一个数学类定义了一些函数 都可以声明伪静态的 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的角度考虑,一切不需要实例化就可以有确定行为方式的函数都应该设计成静态的。
以上只是一些基本的考虑,并不是绝对的。绝对东西的只有一点:“静态函数不需要实例化就可以被调用,不会也不可以调用或操纵非静态成员”。记住这一点,那么实际编程中何时需要用,何时适合用,自然就更容易作出决定了。
- C语言中的静态函数的作用
- C++静态函数的作用
- C++虚函数、静态函数的作用
- C++虚函数、静态函数的作用
- C语言中static的作用及C语言中使用静态函数有何好处
- static静态成员函数的作用
- C#中静态函数的作用
- C++中静态成员函数的作用
- C函数指针的作用
- 静态成员函数作用
- C语言的静态函数
- C语言的静态函数
- C语言的静态函数
- C语言的静态函数
- 静态函数在c中只有用来表示不能被其它文件访问的全局函数这这一个作用
- 【C/C++】C++虚析构函数的作用
- C语言的内联函数的作用
- C语言的内联函数的作用
- shell 中 source 用法
- C#链表;双向链表
- 通过设计让APP变快的6个方法
- Hbase API管理功能2-HBaseAdmin
- sametime闪烁问题解决
- C++静态函数的作用
- ISO8583报文协议
- 微软SQLHelper.cs类 中文版
- JavaScript 中使用JSON
- 扩展微软DDK中的NDIS IM驱动的功能:添加一个DeviceIoControl接口
- 好记性不如烂笔头-java接口只能声明对象,但不能实例化对象
- 图的最短路径弗洛伊德Floyd算法
- C++ pair用法
- 抽象类与接口的异同