This指针的类型为ClassNamein 非常量成员函数。
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方法。
由于上述理解,我无法理解为什么我不能这样做。我在这里遗漏了一些非常基本的东西。