Отредактировано Чтобы быть более кратким.
const
в этих двух контекстах очень отличается.
double Volume() const {
return m_Length * m_Width * m_Height;
}
Это вызывается, когда экземпляр объекта равен const
и возвращает double
. Если вы попытаетесь вызвать этот метод с неконстантным экземпляром, он не скомпилируется.
const myClass obj;
double d = obj.volume();
myClass obj2;
double d = obj2.volume(); // This Fails to compile
С другой стороны ...
double const Volume() {
return m_Length * m_Width * m_Height;
}
вызывается, когда объект не является const
или если предыдущее определение не существует.
myClass obj;
const double d = obj.volume();
const myClass obj2;
const double d = obj2.volume();
(Я должен упомянуть, как мне напомнили ниже, возвращая встроенный константный тип, такой как double
, это на самом деле ничего не значит.)
Когда вы оба объявите, будет вызван соответствующий, в зависимости от того, является ли экземпляр постоянным или нет.
myClass obj;
const double d = obj.volume(); // This calls `const double volume()`
const myClass obj2;
double d = obj2.volume(); // This calls 'double volume() const`