// engConst.cpp // константные методы и константные аргументы #include using namespace std; ////////////////////////////////////////////////////////// class Distance // длина в английской системе { private: int feet; float inches; public: // конструктор без аргументов Distance() : feet(0), inches(0.0) { } // конструктор с двумя аргументами Distance(int ft, float in) : feet(ft), inches(in) { } void getdist() // ввод длины пользователем { cout << "\nВведите число футов: "; cin >> feet; cout << "Введите число дюймов: "; cin >> inches; } void showdist()const // вывод длины { cout << feet << "\'-" << inches <<'\"'; } Distance add_dist(const Distance&) const; // сложение }; //-------------------------------------------------------- // сложение данного объекта с d2, возврат суммы Distance Distance::add_dist(const Distance& d2) const { Distance temp; // временная переменная // feet = 0; // Ошибка: нельзя изменить поле // d2.feet = 0; // Ошибка: нельзя изменить d2 temp.inches = inches + d2.inches; // сложение дюймов if( temp.inches >= 12.0 ) // если сумма превышает 12.0, { // то уменьшаем ее на 12.0 temp.inches -= 12.0; // и увеличиваем число футов temp.feet = 1; // на 1 } temp.feet += feet + d2.feet; // сложение футов return temp; } ////////////////////////////////////////////////////////// int main() { Distance dist1, dist3; // две длины Distance dist2(11, 6.25); // определение и инициализация dist2 dist1.getdist(); // ввод dist1 dist3 = dist1.add_dist(dist2);//dist3 = dist1 + dist2 // вывод всех длин cout << "\ndist1 = "; dist1.showdist(); cout << "\ndist2 = "; dist2.showdist(); cout << "\ndist3 = "; dist3.showdist(); cout << endl; return 0; }