C++ 學習 (容器與繼承)

C++ 容器中類型是固定的,一個容器不可能共存多種類型,但是我們可以將一個派生類的普通指針轉換成一個基類指針一樣,我們也可以把一個派生類的只能指針換成是基類指針。

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <stdlib.h>
#include <ext/memory>
#include <vector>

using namespace std;
class A{
   public:
   double a;
   double discut;

   A(double aa = 0, double dd = 0):a(aa), discut(dd){};
   virtual void havetopay(){
      printf("%.2f\n", a * discut);
   }
};

class B : public A{
   public:
       double cut;
       B(double aa, double bb, double cc){
         a = aa;
         discut = bb;
         cut = cc;
       }
       void havetopay(){
      printf("%.2f\n", a * discut - cut);
    }

};

int main(){

 /*
 智能指針 
 vector<shared_ptr<A>> vec;
 vec.push_back(make_shared<A>(1.0, 0.5));
 vec.back()->havetopay();
 B b = B(1.0, 0.8, 0.1);

 vec.push_back(make_shared<B>(1.0, 0.5, 0.1));

 vec.back()->havetopay();*/

 vector< A *> vec;
 A a = A(1.0, 0.5);
 vec.push_back(&a);
 B b = B(1.0, 0.5, 0.1);
 vec.push_back(&b);

 vec.back()->havetopay();
 return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章