DEBUG102 This program demonstrates inheritance A SaleItem cl
//DEBUG10-2
 //This program demonstrates inheritance
 //A SaleItem class is derived from an Item class
 #include<iostream>
 #include<string>
 using namespace std;
 class Item
 {
    protected::
       int idNum,
       int quantity,
    public:
        void setData(int, int);
        void showItem();
 };
 void Item::setData(int id, int amt)
 {
      idNum == id;
      quantity == amt;
 }
 void Item::showItem()
 {
    cout << \"#\" << idNum << \"    Quantity \" << quantity << endl;
 }
 class SaleItem : public Item
 {
 private:
      double itemPrice;
 public:
      void setData(int, int, double);
      void showSaleItem();
 };
 void SaleItem::settData(int id, int amt, double price)
 {
    Item.setdata(id,amt);
    itemPrice = price;
 }
 void SaleItem::showSaleItem()
 {
    cout << \"SaleItem ID #\" << idNum;
    cout << \" Price $\" << itemPrice << endl;
    showItem();
 }
 int main()
 {
    Item thing;
    thing.setData(870, 100);
    cout << endl << \"Item...\" << endl;
    thing.showItem();
    SaleItem saleThing;
    saleThing.setData(888, 200, 3.88);
    cout << endl << endl << \"SaleItem...\" < endl;
    saleThing.showSaleItem();
    return 0;
 }
Solution
There is a danger when:
 1. the method is overridden
 2. the method calls other methods that are overridden
#include<iostream>
 #include<string>
 using namespace std;
 class Item
 {
 protected:
    int idNum;
    int quantity;
 public:
    void setData(int, int);
    void showItem();
};
 void Item::setData(int id, int amt)
 {
    idNum = id;
    quantity = amt;
 }
 void Item::showItem()
 {
    cout << \"Id \\t\" << idNum << \"\\t Quantity \\t\" << quantity << endl;
 }
 class SaleItem : public Item
 {
 private:
    double itemPrice;
    int idNum;
    int quantity;
 public:
    virtual void setData(int, int, double);
    void showSaleItem();
 };
 void SaleItem::setData(int id, int amt, double price)
 {
    /*int id,amt;*/
    //Item.setdata(id,amt);
    itemPrice = price;
    idNum = id;
    quantity = amt;
 }
 void SaleItem::showSaleItem()
 {
    cout << \"SaleItem ID #\" << idNum;
    cout << \" Price $\" << itemPrice << endl;
    /*showItem();*/
    cout << \"Id \\t\" << idNum << \"\\t Quantity \\t\" << quantity << endl;
 }
 int main()
 {
    Item thing;
    thing.setData(870, 100);
    cout << endl << \"Item...\" << endl;
    thing.showItem();
    SaleItem saleThing;
    saleThing.setData(888, 200, 3.88);
    cout << \"\ \ SaleItem...\" << endl;
    saleThing.showSaleItem();
    return 0;
 }


