This
指针的类型为ClassName
in 非常量成员函数。
class Base
{
public:
void get()
{
//this->put(); Why can't I call back a derived class method eventhough
**this** is pointing to derived class object.
}
};
class derived: public Base
{
public:
void put()
{
// do somthing.
}
};
int main()
{
derived d;
//d.get();
d.put();
return 0;
}
如果我在两个函数中打印this
指针的值,它是相同的,表明它是为派生类对象调用的。还有this
指针类型在derived *
这里。
同样据我所知,如果您pointer
在调用它的方法时有一个 to 对象,那么您只是指向offset
该方法在整体中的位置,object layout
从 to 的address
现在pointer
开始object
。
derived
但是当我有类方法的start
地址时,为什么我不能偏移到(derived)object
类base
方法。
由于上述理解,我无法理解为什么我不能这样做。我在这里遗漏了一些非常基本的东西。