[C++] Razlika kod pretvorbe

poruka: 5
|
čitano: 2.402
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
neaktivan
offline
[C++] Razlika kod pretvorbe

Moze li mi netko objasniti razliku između konstruktora pretvorbe i operatora pretvorbe kod c++-a? Učim po knjizi demistificirani c++ i nigdje nije jasno objašnjena razlika.

Moj najbolji zaključak je da jedan pretvara iz nekog tipa u tip razreda u kojem je deklariran, a drugi obrnuto. Jesam li u pravu? Ili su to samo dva različita načina za ostvariti pretvorbu?

Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Re: [C++] Razlika kod pretvorbe

Nisam siguran na šta misliš (glupi hrvatski prijevod), ali mislim da je to ovo.

 

Ako npr. imaš ovakvu klasu:

 

class foo {
public:

    // Defaultni konstruktor
    foo() {}

    // konstruktor
    foo(const string &str) {
        // ...
    }

    //operator
    foo &operator=(const string &str) {
        // kod ...
        return *this;
    }
};

 

Tada imaš nekoliko slučajeva:

 

string s;


foo a(s); // poziva se konstruktor

foo b = s; // opet konstruktor

foo c; // defaultni kostruktor
c = s; // sad se poziva operator

 

Kod deklaracija a i b se ne poziva defaultni kostruktor, dok se kod deklaracija varijable c prvo pozove defaultni, a onda kostruktor "pretvorbe".

14 godina
neaktivan
offline
Re: [C++] Razlika kod pretvorbe
matej885 kaže...

Nisam siguran na šta misliš (glupi hrvatski prijevod), ali mislim da je to ovo.

 

Ako npr. imaš ovakvu klasu:

 

class foo {
public:

      // Defaultni konstruktor
      foo() {}

      // konstruktor
      foo(const string &str) {
              // ...
      }

      //operator
      foo &operator=(const string &str) {
              // kod ...
              return *this;
      }
};

 

Tada imaš nekoliko slučajeva:

 

string s;


foo a(s); // poziva se konstruktor

foo b = s; // opet konstruktor

foo c; // defaultni kostruktor
c = s; // sad se poziva operator

 

Kod deklaracija a i b se ne poziva defaultni kostruktor, dok se kod deklaracija varijable c prvo pozove defaultni, a onda kostruktor "pretvorbe".

  Blizu :)

Više ovako:

class broj{

 

int n;

 

broj() {}; //podrazumjevani konstruktor

 

broj(const int &cjelobrojni) {     //konstruktor pretvorbe

n = cjelobrojni;

}

 

operator int() {return n;}   //operator pretvorbe

 

}

Poruka je uređivana zadnji put sub 2.4.2011 23:41 (King of Games).
14 godina
neaktivan
offline
Re: [C++] Razlika kod pretvorbe
King of Games kaže...

Moze li mi netko objasniti razliku između konstruktora pretvorbe i operatora pretvorbe kod c++-a? Učim po knjizi demistificirani c++ i nigdje nije jasno objašnjena razlika.

Moj najbolji zaključak je da jedan pretvara iz nekog tipa u tip razreda u kojem je deklariran, a drugi obrnuto. Jesam li u pravu? Ili su to samo dva različita načina za ostvariti pretvorbu?

 

Izgleda da sam krivo mislio. DObro si pretpostavio.

Konstruktor pretvorbe pretvara neki drugi tip u klasu u kojoj je definiran, dok operatort pretvorbe pretvara klasu u neki drugi tip.

 

int j=5;

broj b=j; // konstruktor pretvorbe

int i = b; // operator pretvorbe

14 godina
neaktivan
offline
Re: [C++] Razlika kod pretvorbe
matej885 kaže...
King of Games kaže...

Moze li mi netko objasniti razliku između konstruktora pretvorbe i operatora pretvorbe kod c++-a? Učim po knjizi demistificirani c++ i nigdje nije jasno objašnjena razlika.

Moj najbolji zaključak je da jedan pretvara iz nekog tipa u tip razreda u kojem je deklariran, a drugi obrnuto. Jesam li u pravu? Ili su to samo dva različita načina za ostvariti pretvorbu?

 

Izgleda da sam krivo mislio. DObro si pretpostavio.

Konstruktor pretvorbe pretvara neki drugi tip u klasu u kojoj je definiran, dok operatort pretvorbe pretvara klasu u neki drugi tip.

 

int j=5;

broj b=j; // konstruktor pretvorbe

int i = b; // operator pretvorbe

 

Ok. Hvala. Sad mogu napokon nastavit.

Jedino, mislim da su malo glupo to rješili, zar ne? Mogli su nekako bolje, al ajd.

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice