为什么`this`在调用派生类对象时无法从基类方法访问派生类成员

宇智It

This指针具有ClassName非常量成员函数中的类型

 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到对象,当你调用它,然后你只是指向一个方法offset,其中该方法是目前在整个object layout从开始address存在于pointerobject

但是,derived当我拥有in类方法start地址时,为什么不能偏移该类方法。(derived)objectbase

由于上面的理解,我不明白为什么我不能做到这一点。我在这里错过了一些非常基本的东西。

永久客人

我:编译器编译Base :: get函数时,看不到Derived :: put函数。

您:不是将Derived :: put放在同一文件中吗?为什么编译器看不到?

我:如果4年后有人从另一个文件的Base中派生了一个Derived1 :: putttttt,该怎么办?

你:嗯,也许我明白。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么派生类指针指向基类可以调用派生类成员函数?

来自分类Dev

从派生类访问基类对象

来自分类Dev

C ++:在派生类成员上调用基类方法

来自分类Dev

派生类指向基类对象的指针如何调用派生类的方法?

来自分类Dev

派生类指向基类对象的指针如何调用派生类的方法?

来自分类Dev

为什么要“不要访问派生类在基类中定义的静态成员”。

来自分类Dev

从派生类对象访问重写的方法

来自分类Dev

从基类的指针访问派生类的成员

来自分类Dev

从基类指针访问派生类成员

来自分类Dev

从派生类访问基类中的受保护成员

来自分类Dev

从派生类访问基类中的受保护成员

来自分类Dev

从基类指针访问派生类成员

来自分类Dev

从基类构造函数调用派生类的成员函数

来自分类Dev

从使用派生类成员函数的基类调用函数

来自分类Dev

当在C ++中获得指向基类的指针时,为什么不为派生类对象调用重载函数?

来自分类Dev

从基类的派生类访问属性

来自分类Dev

从基类指针访问派生类

来自分类Dev

C#:我的派生类无法覆盖基类的接口方法实现,为什么?

来自分类Dev

从派生类创建基类对象

来自分类Dev

对派生类对象的基类引用

来自分类Dev

C ++继承:指向基类的派生类指针调用派生类方法

来自分类Dev

为什么无法使用派生类的虚拟方法

来自分类Dev

通过派生类对象调用基类函数

来自分类Dev

引用派生类时基类的对象大小

来自分类Dev

从基类方法克隆派生类

来自分类Dev

从基类方法克隆派生类

来自分类Dev

仅从派生类访问基类方法

来自分类Dev

从类型为基类的向量访问派生类方法

来自分类Dev

从基类指针调用派生类方法

Related 相关文章

热门标签

归档