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