小编ban*_*era的帖子

抽象类和多态

我正在研究抽象类的东西.

#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)

c++ polymorphism virtual clone

1
推荐指数
1
解决办法
101
查看次数

抽象类重载ostream运算符

我有一个基本的抽象类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 <<

c++ virtual overloading abstract ostream

0
推荐指数
1
解决办法
640
查看次数

标签 统计

c++ ×2

virtual ×2

abstract ×1

clone ×1

ostream ×1

overloading ×1

polymorphism ×1