0

私はちょうど 1 週間ほど前に 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

0
  1. その位置で呼び出される新しいローカル変数を宣言しているためです。m_f

  2. ..グローバルメモリに保存しないため、すぐに破棄されます-それは単なるローカルです。

  3. ...そして、典型的な最新のコンパイラは、さらに未使用のローカル変数への割り当てに気づき、この命令を最適化します。

m_fクラスに保存するつもりだったのかもしれません。その場合は、 and の場合と同様に、その中で宣言する必要がm_xありm_yます。

于 2013-11-15T09:37:15.837 に答える