该怎么去理解指向类成员函数的指针
class BB
{
public:
void print()
{
}
};
void main()
{
void(BB::*p)(void) = (&BB::print);//这里 不是只有静态函数才能以“类名::函数名”的方式去访问吗 为什么普通的成员函数也可以?
}
还有void(BB::*p)(void)这个理解成指向BB类型中的成员函数的指针?还是理解成指向BB作用域中的函数指针?
[解决办法]
void(BB::*p)(void)理解成指向BB类型中的成员函数的指针
不是只有静态函数才能以“类名::函数名”的方式去访问吗 为什么普通的成员函数也可以?
不是
例:
BB b;
b.BB::print();//b.print()是简写.只有在调用时才须要一个对象来调用,所以BB::print()不合法。但是BB::print合法。(没有调用)
[解决办法]
我的理解是p是BB类的成员函数的指针
[解决办法]
#include "stdafx.h"#include <stdio.h>class BB{public:void print(){ printf("BB print");}};void main(){ void(BB::*p)(void) = (&BB::print);//这里 不是只有静态函数才能以“类名::函数名”的方式去访问吗 为什么普通的成员函数也可以? BB* pObject = new BB(); (pObject->*p)();}
[解决办法]
http://blog.csdn.net/sunnyorange/article/details/6672383