假设我有这个类:
class Shape
{
public:
int value;
Shape(int v) : value(v) {};
void draw()
{
cout << "Drawn the element with id: " << value << endl;
}
};
和以下代码(有效)
Shape *myShapeObject = new Shape(22);
void (Shape::*drawpntr)();
drawpntr = &Shape::draw;
(myShapeObject ->*drawpntr)();
我有一个 drawpntr 函数指针,指向 Shape 类的返回 0 参数的函数成员。
我想问的第一件事:
drawpntr = &Shape::draw;
该函数是一个成员函数,这里没有对象.. drawpntr 接收什么地址?这个类甚至不应该存在
我同意这条线
(myShapeObject->*drawpntr)();
因为我知道我不能取消引用指向成员函数的函数指针(没有对象-> 没有函数),但是实际存储在 drawpntr 中的地址是什么?没有对象时
drawpntr = &Shape::draw;
行被调用..并且该类也不应该作为实体存在