class MobileContract
{
private:
string _planID;
string _contractID;
PhoneModel _phoneModel;
public:
MobileContract(const string planID,const string contractID,const PhoneModel &phoneModel);
virtual double calcPlanPhonePrice();
virtual void display();
};
class RoadshowContract : public MobileContract
{
private:
double rsPhoneDiscount;
public:
RoadshowContract(string planID, string contractID, PhoneModel& phoneModel, double rsPhoneDiscount);
double calcPlanPhonePrice();
void display();
};
その後、私のメインのファイルに:基本クラスからC++どのように正しいメソッドが呼び出されますか?
std::vector<MobileContract> vect = {
MobileContract("planA","0", PhoneModel("800","Blue",900.50)),
MobileContract("planB","1", PhoneModel("750c","Beige",500)),
RoadshowContract("planC","2", PhoneModel("2110","Red",1000), 50),
RoadshowContract("planA","3", PhoneModel("300","Green",1000), 50)
};
for (int i = 0; i < vect.size(); i++) {
vect[i].calcPlanPhonePrice();
vect[i].display();
cout << "=============================" << endl;
}
calcPlanPhonePriceと表示と呼ばれています。私は彼らに彼らの特定のタイプから呼ばれる必要があります。それ、どうやったら出来るの?可能であればポインタを避ける
これは[tag:C++ 11]機能です。 – iBug
'override'は主にコメントです。コンパイラは、それが正しいかどうかをチェックしますが、オーバーライドされた関数が基本クラスに存在することを単に読者に伝えます。私たちはすでにそのことを知っていました。 – MSalters