Pet*_*trS 1 c++ operator-overloading
我创建了一个类Location,它是类Village和的父类City.我有一个vector<Location*>,包含村庄和城市.现在,我需要打印到标准输出的内容vector.这很简单:
for (int i = 0; i < locations.size(); i++)
cout << locations.at(i);
Run Code Online (Sandbox Code Playgroud)
我已经重载了operator << for classes Village,City和Location.它一直被称为重载operator << Location.我需要调用重载运算符Village和City(取决于具体实例).是否有像虚拟方法类似的重载运算符?
我是用C++编程的新手,我是用Java编程的,所以请帮助我.提前致谢.
简短的回答
不,没有这样的事情.您可以使用现有的C++功能来模拟它.
答案很长
您可以向Location添加方法virtual void Print(ostream& os)并实现operator<<如下:
std::ostream& operator<<(ostream& os, const Location& loc)
{
loc.Print(os);
return os;
}
Run Code Online (Sandbox Code Playgroud)
如果Print()在派生类中覆盖,您将获得所需的功能.