1. 静态成员函数的地址可以用普通函数指针存储,而普通成员函数地址需要用类成员函数指针来存储。
1 class base{ 2 public: 3 static int func1(){}; 4 int func2(){}; 5 }; 6 7 8 int main() 9 { 10 int(*pf1)()=&base::func1; //普通的函数指针 11 int(base::*pf2)()=&base::func2; //成员函数指针 12 return 0; 13 }
2. 静态成员函数不可以调用类的非静态成员。因为静态成员函数不含this指针。
3.静态成员函数不可以同时声明为virtual, const, volatile函数。
4. 静态成员函数无需创建任何实例对象就可以访问。
1 #include<iostream> 2 using namespace std; 3 4 class M 5 { 6 public: 7 M(int a){ 8 A=a; 9 B+=a;} 10 static void f1(M m); 11 private: 12 int A; 13 static int B; 14 }; 15 16 void M::f1(M m) 17 { 18 cout << "A=" << m.A << endl; 19 cout << "B=" << B << endl; 20 } 21 22 int M::B=0; 23 24 int main() 25 { 26 M P(5), Q(10); 27 M::f1(P); 28 M::f1(Q); 29 return 0; 30 }
[zengtx@cmm03node02 test]$./a.out A=5 B=15 A=10 B=15