本文共 896 字,大约阅读时间需要 2 分钟。
二、类的static functions
1、独立于类的具体对象的存取操作
在static member function引入C++之前,C++标准要求所有的member functions都必须通过class object调用。但事实上,并不是所有的member function调用都应该先产生class object,如果不直接存取nonstatic data members,class object是不必要的。
static member function主要就是没有隐含的this指针。
对于nonstatic member function的调用必须通过class object,就是因为nonstatic member function 需要一个隐式的this指针,虽然nonstatic member function 不一定直接存取nonstatic data members。而对于static member function语义上就决定不直接存取nonstatic data members,因为nonstatic data members与class object关联。
基于static member functios语义,可得出以下结论:
a、static member functions不直接存取nonstatic data members。
b、static member functions不能调用nonstatic function members。
c、static member functions不需要通过class object调用,当然可以通过class object 调用。
d、static member functions地址类型不是一个指向class member function的指针,而是一个指向nonmember function的指针,指针类型与类名无关。
static member functions的语义表明它几乎等同于nonmember functions,成为面向对象中回调函数的较好选择,比如类中的线程入口函数。
转载地址:http://aqcmb.baihongyu.com/