Возвращает переменную-член по ссылке:
int& ColPeekHeight(){ return _colPeekFaceUpHeight; }
Чтобы сделать ваш класс хорошим, определите постоянную версию функции:
const int& ColPeekHeight() const { return _colPeekFaceUpHeight; }
когда я объявляю функцию с двумя const
s
Когда вы хотите передать объект в функцию, которая, как вы ожидаете, не изменит ваш объект.Возьмите этот пример:
struct myclass
{
int x;
int& return_x() { return x; }
const int& return_x() const { return x; }
};
void fun(const myclass& obj);
int main()
{
myclass o;
o.return_x() = 5;
fun(o);
}
void fun(const myclass& obj)
{
obj.return_x() = 5; // compile-error, a const object can't be modified
std::cout << obj.return_x(); // OK, No one is trying to modify obj
}
Если вы передаете свои объекты функциям, вы, возможно, не захотите изменять их фактически все время.Таким образом, чтобы защитить себя от подобных изменений, вы объявляете const
версию своих функций-членов.Не обязательно, чтобы каждая функция-член имела две версии!Это зависит от самой функции, является ли она модифицирующей функцию по своей природе:)
Первая const
говорит, что возвращаемое значение является постоянным.Второй const
говорит, что функция-член return_x
не не изменяет объект (только для чтения).