[Tutorial C/C++/C#] Conversii

Locked
User avatar
LaUR SNG
Fondator
Fondator
Posts: 9038
Joined: 8 years ago
Location: SNAGOV
Has thanked: 11 times
Been thanked: 6 times
Zodiac:
Age: 21
Contact:
Status: Offline
Romania

8 years ago

Nume Tutorial: Conversii
Descriere: Un tutorial folositor pentru cei care lucreaza in limbajul de programare C++
Download: -
Autor: Nu este specificat.
Sursa (Link-ul oficial): -
tutorialeprogramare.ro


Propria parere: Folositor
Tutorialul: Mai jos .

Problema conversiei unui tip dat "T1" intr-un altul "T2". Aceasta problema se poate diviza in doua subprobleme:

a. Conversia unui tip oarecare "T1" intr-un altul "T2", definit de catre utilizator. Aceasta subproblema se va rezolva printr-un constructor al clasei "T2", care va avea un singur argument (de tipul "T1"). In aceasta situatie nu are nici o importanta tipul lui "T1": el poate fi atat predefinit ("int", "double", etc.) cat si definit de catre utilizator.
b. Conversia unui tip T1 definit de catre utilizator intr-un tip T2 predefinit. Aceasta situatie speciala va fi tratata de catre operatori de tipul "T1::operator T2(void)", care vor realiza conversia si vor returna o valoare de tipul T2.

Exemplu:

Code: Select all

#include <iostream.h>

class rational {
   int numitor, numarator;

   public:
   rational(int n1, int n2=1) {
      // Acest constructor poate fi utilizat si la 
      // conversiile implicite de genul "int"->"rational"

      numarator=n1; n2!=0 ? numitor=n2 : numitor=1;
   }

   // conversie "rational-real"
   operator double(void) {
      return numarator/(double)numitor;
   }

   void tip(char *nume) {
      cout<<nume<<" = "<<numarator<<"/"<<numitor<<"\n";
   }

   rational& operator * (rational& r) {
      return *(new rational(numarator*r.numarator, numitor*r.numitor));
   }
};

void main(void) {
   rational a(1, 2), b(2, 3), c(3), d(7, 9);
   double db1;

   a.tip("a");
   c=a*b;
   c.tip("c");
   d=b*c*3; // conversie "intreg->rational":
   // numarul intreg 3 se va converti intr-unul rational
   // prin apelul constructorului "rational(3, 1)";

   a.tip("d");
   db1=d; // conversie "rational->real": "d" se va
   // converti intr-un real

   cout<<"db1 = "<<db1;
}
[/b]
„Iubiti totul cu toată inima ... căci viața se termină când vrea ea si pe nepusă masă !” – LaUR SNG

https://photos.app.goo.gl/WbQsF4C9QfvDvWSo6

Curios ? Nu il deschide :13:

[spoiler]Image[/spoiler]
[spoiler]Image[/spoiler]

https://www.facebook.com/10043517804227 ... 039605115/
Locked

Return to “C / C++ / C#”