使用字符串时无法覆盖多态

时间:2019-05-28 03:40:12

标签: c++ polymorphism dev-c++

Polymorphism在dec C中不支持字符串

我正在使用Dev C++ 5.9.2.

我有一个父类A,类B,C,D,E ..... extends A和类list是我使用B,C,D.的主要类< / p>

我不使用父级A,因为我想重用构造函数A。

问题如下

class A
{
    public:
    virtual void show(){
            printf("A");
        }
    private:    
    string tokenS;

};

class B :public A
{
    public:
    virtual void show(){
        printf("B:");
       // return 0;
    }
}

class list
{
    public:
        A* getNode(){
           return pta;
        }

        void setNode(B temp){
           this->pta=&temp;
        }
    protected:
    private:
        A *pt1;
};
int main(){
    list ls;
    B b1;
    ls.setNode(b1);
    ls.getNode()->show();
}
  

如果我使用string tokenS结果: A

     

如果我使用char* tokenS结果: B:

我不理解,如果我创建类并使用它,我也会遇到相同的错误

class Date
{
   // code
};

class A
    {
        public:
        virtual void show(){
                printf("A");
            }
        private:    
        Date day;

    };

 class B :public A
    {
        public:
        virtual void show(){
            printf("B:");
           // return 0;
        }
    }

1 个答案:

答案 0 :(得分:0)

问题在这里:

<!DOCTYPE html>
<html>
<head>
  <style>
.box{
  width: 400px;
  height: 400px;
  background-color: red;
}
.inBox{
  width: 200px;
  height: 200px;
  background-color: white;

  margin-top: 100px;
}
  </style>
  <meta charset="utf-8">
</head>
<body>
  <div class = "box">
    <div class = "inBox">
  </div>
</body>
</html>

这会将 void setNode(B temp){ this->pta=&temp; } 设置为指向pta,但是在函数结束时temp不再存在。这是修复它并保留多态性的方法:

temp