类中的C ++方法定义是否必须指定返回类型?

时间:2010-10-13 21:15:55

标签: c++ return-type

刚看到与{C ++类和程序中的分段错误问题有关的this question

我的问题与班级定义有关。这是发布时间:

class A { 
    int x; 
    int y;

    public: 
    getSum1() const { 
        return getx() + y; 
    } 

    getSum2() const { 
        return y + getx(); 
    }

    getx() const { 
        return x; 
    }     
} 

到目前为止,该问题的答案都没有提及方法的返回类型。我希望它们被定义为

int getSum1() const { ....
int getSum2() const { ....
int getx() const { ....

int必须在那里吗?

3 个答案:

答案 0 :(得分:4)

是的,在C ++中,返回类型必须。有关C和C ++之间的比较,请参阅here

答案 1 :(得分:3)

是的,int必须在那里。原始代码示例无效(正如其他人提到的,代码可能最初是C而不是C ++)。首先,类声明需要一个终止分号才有机会进行编译。 g ++报告:

foo.cpp:3: note: (perhaps a semicolon is missing after the definition of ‘A’)

添加分号:

class A { 
  int x; 
  int y;

public: 
  getSum1() const { 
    return getx() + y; 
  } 

  getSum2() const { 
    return y + getx(); 
  }

  getx() const { 
    return x; 
  }     
};

哪个仍然失败。 g ++将报告以下内容:

foo.cpp:8: error: ISO C++ forbids declaration of ‘getSum1’ with no type
foo.cpp:12: error: ISO C++ forbids declaration of ‘getSum2’ with no type
foo.cpp:16: error: ISO C++ forbids declaration of ‘getx’ with no type

答案 2 :(得分:1)

是的,他们确实必须在那里。