×

Welcome to TagMyCode

Please login or create account to add a snippet.
0
0
 
0
Language: C++
Posted by: dani dan
Added: Feb 23, 2021 1:06 PM
Views: 4756
Tags: mabtrolo
  1. #include <iostream>
  2. #include <sstream>
  3.  
  4.  
  5.  
  6. using namespace std;
  7.  
  8. class Persona
  9. {
  10.     private:
  11.        string DNI;
  12.        int edad;    
  13.  
  14.     public:
  15.         Persona()
  16.         {
  17.         }
  18.  
  19.         Persona(string DNI, int edad)
  20.         {
  21.             this->DNI=DNI;
  22.             this->edad=edad;
  23.         }
  24.  
  25.        
  26.  
  27.         int getEdad()
  28.         {
  29.             return this->edad;
  30.         }
  31.        
  32.         string getDNI()
  33.         {
  34.             return this->DNI;
  35.         }
  36.        
  37.         Persona operator +(Persona const &otra)
  38.         {
  39.                 Persona res(*this);
  40.                 res.edad=this->edad + otra.edad;
  41.                 return res;
  42.         }
  43.  
  44.         Persona & operator ++ () //Preincremento ++variable
  45.         {
  46.             this->edad ++;
  47.             return *this;
  48.         }
  49.  
  50.         Persona operator++(int) //Postincremento variable++
  51.         {
  52.             Persona tmp(*this); // copia del objeto que recibe el mensaje
  53.             this->operator++(); // pre-incremento del objeto que recibe el mensaje
  54.             return tmp;         // devolvemos la copia que hicimos antes
  55.         }
  56.  
  57.         bool operator<(Persona const &otra)
  58.         {
  59.             if(this->edad < otra.edad)
  60.                 return true;
  61.             else
  62.                 return false;
  63.         }
  64.        
  65.         string mostrar()
  66.         {  
  67.             return (this->DNI + ", " + to_string(this->edad));
  68.         }
  69.        
  70.         friend ostream& operator<< (ostream& o, const Persona& p)
  71.         {
  72.             o << p.DNI << " (" << p.edad << ")";
  73.            
  74.             return o;
  75.         }
  76.        
  77.         Persona operator- (Persona const &otra)
  78.         {
  79.                 Persona res(*this);
  80.                 res.edad=this->edad - otra.edad;
  81.                 return res;
  82.         }
  83.        
  84.         bool operator >(Persona const &otra)
  85.         {
  86.             if(this->edad > otra.edad)
  87.                 return true;
  88.             else
  89.                 return false;
  90.         }
  91.        
  92.         friend istream& operator>> (istream& o, Persona& p)
  93.         {
  94.             o >> p.DNI;
  95.            
  96.             o >> p.edad;
  97.            
  98.             return o;
  99.         }
  100.         bool Persona::operator== (const Persona &p) const
  101.         {
  102.             return this->DNI == p.DNI && this->edad == p.edad;
  103.         }
  104.        
  105.        
  106. };
  107.  
  108.        
  109.  
  110. int main()
  111. {
  112.     Persona p1("69696969T", 32), p2("12345678U", 16);
  113.  
  114.     Persona p3;
  115.  
  116.     p3=p1+p2;
  117.     cout << p3.mostrar() << endl;
  118.    
  119.     cout << p3 << endl;
  120.  
  121.     ++p3;
  122.     p3++;
  123.  
  124.     cout << p3.mostrar() << endl;
  125.    
  126.     cin >> p3;
  127.    
  128.     cout << p3;
  129.  
  130.     return 0;
  131. }
  132.