static的函数和没有用static 的函数有什么区别?

sunwen 2002-03-27 09:35:06
static的函数和没有用static 的函数有什么区别?
...全文
58 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
doo_fu 2002-03-28
  • 打赏
  • 举报
回复
同意楼上。
xiaolun 2002-03-28
  • 打赏
  • 举报
回复
C中不是已经说了吗:

非类成员的static函数,作用域在本文件范围内。一般用于一些只被本文件中
一些函数调用的内部函数。
dxhdxh2k 2002-03-28
  • 打赏
  • 举报
回复
up
sunwen 2002-03-28
  • 打赏
  • 举报
回复
对不起我说的是在C中的
xiaolun 2002-03-27
  • 打赏
  • 举报
回复
从本质上讲,static 成员函数中无法对 this 指针进行操作!
xiaolun 2002-03-27
  • 打赏
  • 举报
回复
非类成员的static函数,作用域在本文件范围内。一般用于一些只被本文件中
一些函数调用的内部函数。

类的static成员函数,无论是否有该类的实例存在,此函数均存在。即不需要
对此类的实例调用此函数,可以直接对类名调用。而非 static 的成员函数就
不行!

class foo{
void f1(void);
static void f2();
};

调用时:

foo b;

b::f1();//对
foo::f1()//错

b::f2();//对
foo::f2()//对

还有:
1.不能存取类中的非 static 成员或调用类中的fei非 static 成员函数
2.不能为 virtual

doo_fu 2002-03-27
  • 打赏
  • 举报
回复
普通的类成员函数,必须先定义对象(Define),然后通过对象调用其成员函数(在调用参数中隐含了this指针),而static成员函数可以不定义对象,直接通过“类名::成员函数名(参数)”调用(在调用参数中不隐含this指针)
hyc1980 2002-03-27
  • 打赏
  • 举报
回复
有static的,是不用生成对象实例的情况下都可以直接调用的函数;就像楼上两位所说的那样没有错
BugLu 2002-03-27
  • 打赏
  • 举报
回复
用在类中的函数如果前面声明了static,则所用地方都可以直接调用这个函数
EX:
class foo{
static void fun();
};

调用时:
foo b;
b::fun();//直接调用,但fun中不应访问类的非静态成员变量
lingg2002 2002-03-27
  • 打赏
  • 举报
回复
在类中static函数不需要借助任何对象就可以被调用

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧