Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:05. Функции / Examples / 01_references / main
.cpp#include "Date.h"
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
Date date = {9, SEP, 2011};
//===== Создание альтернативного имени для переменной date
Date& rDate = date;
rDate.yyyy++; // все изменения rDate отражаются на переменной date
cout << "rDate after: ";
printDate(&rDate);
cout << endl;
cout << " date after: ";
printDate(&date); // rDate и date - это разные способы обратиться
// к одному и тому же участку памяти
cout << endl;
//===== Использование константной ссылки, чтобы гарантировать, что объект не изменится
const Date& crDate = date;
printDate(&crDate); // ОК. Функция принимает указатель на константу,
// и мы передаём константную ссылку
// crDate.yyyy++; // Ошибка компиляции! Нельзя менять объект посредством
// константной ссылки
//===== Направить ссылку на нужный нам объект
Date date1 = {9, SEP, 2011};
Date currentDate = getCurrentDate();
// Вопрос. Как работать с такой датой:
// date1, если эта дата в прошлом,
// или currentDate, если date1 в будущем?
// Вариант - создать ссылку на нужную дату:
Date& actualDate = (compareDates(&date1, ¤tDate) < 0 ? date1 : currentDate);
printDate(&actualDate);
// ... другие действия над переменной-ссылкой actualDate
}