私の教授は、継承の例を示すために次のコードを与えました。
//Base class
class Inventory {
int quant, reorder; // #on-hand & reorder qty
double price; // price of item
char * descrip; // description of item
public:
Inventory(int q, int r, double p, char *); // constructor
~Inventory(); // destructor
void print();
int get_quant() { return quant; }
int get_reorder() { return reorder; }
double get_price() { return price; }
};
Inventory::Inventory(int q, int r, double p, char * d) : quant (q), reorder (r), price (p)
{
descrip = new char[strlen(d)+1]; // need the +1 for string terminator
strcpy(descrip, d);
} // Initialization list
//Derived Auto Class
class Auto : public Inventory {
char *dealer;
public:
Auto(int q, int r, double p, char * d, char *dea); // constructor
~Auto(); // destructor
void print();
char * get_dealer() { return dealer; }
};
Auto::Auto(int q, int r, double p, char * d, char * dea) : Inventory(q, r, p, d) // base constructor
{
dealer = new char(strlen(dea)+1); // need +1 for string terminator
strcpy(dealer, dea);
}
「Auto::Auto(intq、int r、double p、char * d、char * dea):Inventory(q、r、p、d)」という行が混乱しました。「Inventory(q、r 、p、d)"やっています。同様に、「Inventory :: Inventory(int q、int r、double p、char * d):quant(q)、reorder(r)、price(p)」の行で、彼がquantで何をしているのかわかりません。 (q)、再注文(r)、価格(p)。これらは、クラスでint quant、reorder、double priceとして定義されたものと同じ変数ですか?もしそうなら、なぜ彼はコンストラクターで使用しなければならなかったのですか。そして、なぜ/どのように彼は「自動」クラスコンストラクターの定義を支援するために基本クラスのコンストラクターを使用したのですか。