我正在研究抽象类的东西.
#include <iostream>
#include <vector>
using namespace std;
class Shape
{
protected:
int m_size;
public:
int getSize() { return m_size; }
virtual bool isEqual(Shape *rhs) = 0;
};
Run Code Online (Sandbox Code Playgroud)
这是派生类之一:
class Circle : public Shape
{
public:
Circle(int size) { m_size = size; }
bool isEqual(Shape *rhs)
{
Circle* circle = dynamic_cast<Circle*>(rhs);
if(circle == 0)
return false; // not a Circle
return m_size == circle->getSize();
}
};
Run Code Online (Sandbox Code Playgroud)
我将所有形状存储在一个容器中(基本上是一个形状指针的向量).
class Container
{
private:
vector<Shape*> v;
public:
~Container()
{
for(int i = 0; …Run Code Online (Sandbox Code Playgroud) 我有一个基本的抽象类Base.
class Base
{
protected:
string m_Name;
public:
virtual string Name() { return m_Name; }
virtual string Type() = 0;
virtual bool isEqual(Base* rhs) = 0 ;
//virtual ostream& operator<< (ostream& out) const;
};
Run Code Online (Sandbox Code Playgroud)
我想重载operator <<显示继承的对象Base.我不能使用void print()函数,因为这些继承的对象Base也有一些只能显示的对象operator <<.
我怎么能超负荷operator <<?