- En C++, podemos hacer que los operadores funcionen para clases definidas por el usuario. Esto significa que C++ tiene la capacidad de proporcionar a los operadores un significado especial para un tipo de datos, esta capacidad se conoce como sobrecarga de operadores .
- En este artículo, sobrecargaremos un operador ‘+’ en la clase Time para que podamos concatenar dos marcas de tiempo simplemente usando +.
Ejemplo:
Entrada: T1 = 5:50:30, T2 = 7:20:34
Salida: 13:11:4
Enfoque: Para lograr la sobrecarga del operador +, se realizan los siguientes pasos/funciones:
Se define Class Time en el cual existen 3 variables para almacenar el valor de horas, minutos y segundos respectivamente.
int HR, MIN, SEC; where HR is for hours, MIN is for minutes, and SEC is for seconds
- función setTime() para establecer valores de HR, MIN y SEC.
void setTime(int x, int y, int z) { x = HR; y = MIN; z = SEC; }
- función showTime() para mostrar la hora en un formato específico (HH:MM:SS).
void showTime() { cout << HR << ":" << MIN << ":" << SEC; }
- función normalize() para convertir el tiempo resultante en forma estándar.
Sobrecarga del operador + para sumar el tiempo T1 y T2 mediante sobrecarga del operador.
A continuación se muestra el programa C++ que implementa la sobrecarga + para agregar dos marcas de tiempo:
C++
// C++ program to implement + operator // overloading to add two timestamps #include <iostream> using namespace std; // Time class template class Time { private: int HR, MIN, SEC; // Defining functions public: // Functions to set the time // in the Time class template void setTime(int x, int y, int z) { HR = x; MIN = y; SEC = z; } // Function to print the time // in HH:MM:SS format void showTime() { cout << endl << HR << ":" << MIN << ":" << SEC; } // Function to normalize the resultant // time in standard form void normalize() { MIN = MIN + SEC / 60; SEC = SEC % 60; HR = HR + MIN / 60; MIN = MIN % 60; } // + Operator overloading // to add the time t1 and t2 Time operator+(Time t) { Time temp; temp.SEC = SEC + t.SEC; temp.MIN = MIN + t.MIN; temp.HR = HR + t.HR; temp.normalize(); return (temp); } }; // Driver code int main() { Time t1, t2, t3; t1.setTime(5, 50, 30); t2.setTime(7, 20, 34); // Operator overloading t3 = t1 + t2; // Printing results t1.showTime(); t2.showTime(); t3.showTime(); return 0; }
Producción:
5:50:30 7:20:34 13:11:4
Publicación traducida automáticamente
Artículo escrito por simrankumar0799 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA