【问题标题】:Virtual Functions can set publicdata members of base class?虚函数可以设置基类的publicdata成员吗?
【发布时间】:2017-11-05 02:39:51
【问题描述】:

setPosition(3,4) 在方法 foo() 中有效,但在派生的虚拟绘制方法中无效 矩形类。这不是 C++ 中的一个特性吗?谢谢。

class Shape
{
public:
       int posX, posY;
public:
    virtual void draw() const = 0;
    void setPosition(int pX, int pY)
    {
        posX = pX;
        posY = pY;
    }
};

class Rectangle : public Shape
{
public:
    virtual void draw() const
    { 
        cout << "Drawing rectangle at " << posX << "  "
           << posY << endl;
            setPosition(3,4);
    }
    void foo()
    {
        setPosition(3,4);
    }
    };

【问题讨论】:

    标签: c++ function virtual


    【解决方案1】:

    您不能从const 方法调用非const 方法,因为这不会使对象保持不变。

    如果draw需要调用setPosition并因此更改Rectangle,则不能声明const。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-22
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      相关资源
      最近更新 更多