初学者:快速构造函数问:

时间:2013-11-15 09:33:45

标签: c++

我在大约一周前开始使用C ++,最近在课堂上介绍了构造函数。使用Code :: Blocks,我想出了一个基础类。我的问题是:与{float m_f = f;}相比,为什么我不能简单地使用{m_f = f;}?我的编译器不喜欢我在没有浮动的情况下尝试它。

class classyClass
{
    public:
       classyClass(int x=0, int y=0) {m_x = x; m_y = y;}
       classyClass(float f=0) {float m_f = f;}

       void setX(int x) { m_x = x; }
       void setY(int y) { m_y = y; }

       int getX() const { return m_x; }
       int getY() const { return m_y; }

    private:
       int m_x;
       int m_y;
};

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我想您只是忘了将m_f声明为您班级的数据成员。:)

//...
    private:
    int m_x;
    int m_y;
    float m_f;

答案 1 :(得分:0)

  1. 因为您在该位置声明了名为m_f new 局部变量。

  2. ..会立即丢弃,因为你不将它保存在全局内存中 - 它只是一个本地内存。

  3. ...一个典型的现代编译器会注意到对另一个未使用的局部变量的赋值并优化该指令。

  4. 可能你打算在课堂上保存m_f;如果是这样,你必须在其中声明它,就像你对m_xm_y所做的那样。