C++ 如何将基类的重载运算符函数调用为派生类的重载运算符函数

C++ 如何将基类的重载运算符函数调用为派生类的重载运算符函数,c++,class,oop,object,operator-overloading,C++,Class,Oop,Object,Operator Overloading,在上面的代码中,如何调用重载最简单、最干净的方法是:- class Vehicle{ long Number; int Year; char *Make,*Model,*BodyStyle,*Color; float Cost; friend ostream & operator<<(ostream& stream,const Vehicle& v); class TruckVehicle:public Vehicle{ int Passengers; lo

在上面的代码中,如何调用重载最简单、最干净的方法是:-

class Vehicle{
long Number;
int Year;
char *Make,*Model,*BodyStyle,*Color;
float Cost;
friend ostream & operator<<(ostream& stream,const Vehicle& v);

class TruckVehicle:public Vehicle{
int Passengers;
long Mileage,GrossWeight,TempGross;
char *PoweredBy;

friend ostream & operator<<(ostream& stream,const TruckVehicle& t )
i、 e put是一个虚拟函数,可确保在friend ostream&Operator中使用正确的输出操作virtual ostream&putostream&s const=0;然后是常数b?
class Base
{
  public:
      virtual ostream& put(ostream& s) const = 0;
};

ostream& operator<<(ostream& s, const Base& r)
{
    return r.put(s);
}

class Derived : public Base
{
  public:
      ostream& put(ostream& s) const;
};

void f(const Base b, Derived d)
{
    cout << b << d;
}