0

我大约一周前开始使用 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;
};

谢谢你的帮助!

4

2 回答 2

1

我认为您只是忘记将 m_f 声明为类的数据成员。:)

//...
    private:
    int m_x;
    int m_y;
    float m_f;
于 2013-11-15T09:40:29.733 回答
0
  1. 因为您正在声明一个在该位置调用的局部变量。m_f

  2. .. 这将被立即丢弃,因为您没有将它保存在全局内存中——它只是一个本地内存。

  3. ...并且典型的现代编译器会注意到分配给另一个未使用的局部变量并优化此指令。

可能你打算m_f在课堂上存钱;如果是这样,您必须在其中声明它,就像您为m_xand所做的那样m_y

于 2013-11-15T09:37:15.837 回答