最佳答案
当我第一次用 GCC 4.3编译我的 C + + 代码时(在使用 -Wall -Wextra
选项在4.1,4.0,3.4上没有警告的情况下成功地编译了它之后) ,我突然发现了一堆 warning: type qualifiers ignored on function return type
格式的错误。
考虑 temp.cpp
:
class Something
{
public:
const int getConstThing() const {
return _cMyInt;
}
const int getNonconstThing() const {
return _myInt;
}
const int& getConstReference() const {
return _myInt;
}
int& getNonconstReference() {
return _myInt;
}
void setInt(const int newValue) {
_myInt = newValue;
}
Something() : _cMyInt( 3 ) {
_myInt = 2;
}
private:
const int _cMyInt;
int _myInt;
};
运行 g++ temp.cpp -Wextra -c -o blah.o
:
temp.cpp:4: warning: type qualifiers ignored on function return type
temp.cpp:7: warning: type qualifiers ignored on function return type
谁能告诉我哪里做错了,违反了 C + + 标准?我认为当按值返回时,前面的 const
是多余的,但是我很难理解为什么需要用它来生成警告。还有其他地方我应该停止使用常数吗?