Когда я впервые скомпилировал свой код на С++ с помощью GCC 4.3 (после того, как он скомпилировал его успешно без предупреждений на 4.1, 4.0, 3.4 с параметрами -Wall -Wextra
), я неожиданно получил кучу ошибок формы 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
Может ли кто-нибудь сказать мне, что я делаю неправильно, что нарушает стандарт С++? Я полагаю, что при возврате по значению ведущий const
лишний, но мне трудно понять, почему ему необходимо создать предупреждение. Существуют ли другие места, где я должен покинуть const?