私は C++ が初めてで、基本クラス Car へのポインターのベクトルを含む CarRental クラスを作成しようとしています。これが Car クラスです。
class Car{
public:
Car():mPlate(""), mBrand(""){}//constructor
Car(string p, string b): mPlate(p), mBrand(b){} //constructor
virtual ~Car(){}//destructor
const string plate() const;
const string brand() const;
virtual int numPassengers() = 0;
protected:
string mPlate;
string mBrand;
};
const string Car::plate() const{
return mPlate;
}
const string Car::brand() const{
return mBrand;
};
そして、車を保管するためのコンテナーを含むクラス CarRental を作成する必要があります。例えば、
class CarRental{
public:
CarRental(vector<Car*> cars){mCars = cars;};
const vector<Car*>& getCars() const;
void addCar(Car*);
private:
vector<Car*> mCars;
};
const vector<Car*>& CarRental::getCars() const{
return mCars;
}
void CarRental::addCar(Car* c){
mCars.push_back(c);
}
私が書いた CarRental のクラスが正しいかどうかは疑問です。独自のコピー コンストラクターを作成する必要があるかどうかを検討しています。そして、THE BIG THREE では、代入演算子とデストラクタも必要でしょうか? 3つはメモリリークですか?例外安全性はどうですか?