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;
}

