C++ C++;指向成员函数的函数指针-它接收哪个地址?
假设我有这门课:C++ C++;指向成员函数的函数指针-它接收哪个地址?,c++,function-pointers,C++,Function Pointers,假设我有这门课: class Shape { public: int value; Shape(int v) : value(v) {}; void draw() { cout << "Drawn the element with id: " << value << endl; } }; 我有一个drawpntr函数指针,指向返回类Shape的0参数函数成员的void 我想问的第一件事是: draw
class Shape
{
public:
int value;
Shape(int v) : value(v) {};
void draw()
{
cout << "Drawn the element with id: " << value << endl;
}
};
我有一个drawpntr函数指针,指向返回类Shape的0参数函数成员的void
我想问的第一件事是:
drawpntr = &Shape::draw;
函数是一个成员函数,这里没有对象。。pntr收到什么地址?这个类甚至不应该存在
我同意这句话
(myShapeObject->*drawpntr)();
因为我知道我不能反引用指向成员函数的函数指针(无对象->无函数),但drawpntr中实际存储了什么地址??没有物体当
drawpntr = &Shape::draw;
行被调用。。类也不应该作为一个实体存在所有成员函数共享相同的代码,因此它们在内存的代码段中具有相同的地址。成员函数只能在不同的实例上操作,因为它们被隐式传递给
此
指针的不同值。它们与它们操作的任何实例都没有任何联系。如果函数为非虚拟函数,则可以静态确定drawpntr
的实际值;如果函数为虚拟函数,则可以动态(通过)确定drawpntr的实际值
drawpntr = &Shape::draw;