title: how to write a class with its member is a vector of pointers to own defined class
body: <p>I'm new to C++ and I'm trying to write a CarRental class which contains a vector of pointers to a base class Car. 
  Here's the Car class.    </p>
  
  <pre><code>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;
  };
  </code></pre>
  
  <p>And I need to write a class CarRental which contains the container to store the cars. For example,</p>
  
  <pre><code>class CarRental{
  public:
      CarRental(vector&lt;Car*&gt; cars){mCars = cars;};
      const vector&lt;Car*&gt;&amp; getCars() const;
      void addCar(Car*);
  private:
      vector&lt;Car*&gt; mCars;
  };
  
  const vector&lt;Car*&gt;&amp; CarRental::getCars() const{
      return mCars;
  }
  
  void CarRental::addCar(Car* c){
      mCars.push_back(c);
  }
  </code></pre>
  
  <p>I doubt whether the class of CarRental I wrote in the right way. I'm considering if I need to write my own copy constructor. And by THE BIG THREE, should I also need assignment operator and destructor? Would three be any memory leaks? How about exception safety?</p>