.*运算符表示什么意思?好几次遇到.*,但不知道如何使用。后来发现,可以体现在成员函数指针的调用上。
1,函数指针指向公有非静态的成员函数。此时,必须创建一个对象来调用函数指针。
1 class Container{ 2 public: 3 void print(){ 4 printf("printf()"); 5 } 6 }; 7 8 int main() 9 { 10 void (Container::*p)(); //指明是指向成员函数的指针 11 p = &Container::print; 12 Container c; 13 (c.*p)(); 14 return 0; 15 }
2,函数指针指向静态函数。
1 class Container{ 2 public: 3 static void print(){ 4 printf("printf()"); 5 } 6 }; 7 int main() 8 { 9 void (*p)(); 10 p = &Container::print; 11 p(); 12 return 0; 13 }