konwersja - klasa Stone

0

Cześć!
Może mi ktoś wytłumaczyć o co chodzi z funkcją konwersji typu argumentu na typ klasy??
Przykładowo Stone(double lt); oznacza konwersje double na Stone - i właśnie mi chodzi o to, że nie rozumiem co będzie teraz z lt? czy będzie obiektem czy jak?

0

To jest konstruktor - it to zwykły argument. (żadna konwersja)

0

it jest zwykłym argumentem tego konstruktora, po pracy konstruktora zostanie on usunięty. Konwersja polega na tym, że kompilator dopasowuje konstruktor do tego, co podstawisz.

Dany konstruktor jest odpalany i potem na podstawie argumentu pracuje.

3

Każdy konstruktor z jednym argumentem jeżeli nie jest poprzedzony klauzulą explicit może zostać użyty przez kompilator do konwersji niejawnej.

#include <iostream>
using namespace std;
 
struct Stone
  {
   Stone(double x) { cout<<"Konstruktor "<<x<<endl; }
  };
 
void fun(Stone s)
  {
   cout<<"Funkcja"<<endl;
  }
 
int main()
  {
   fun(3.3); // tu nastąpi konwersja niejawna z double na Stone
   return 0;
  }

http://ideone.com/kdNq05

0

Właśnie o to mi chodzi. Co oznacza, że double jest konwertowane na Stone? Że zostanie wywołany konstruktor Stone z parametrem, który został podany w funkcji fun?

1

Tak. Zostanie wywołany konstruktor z argumentem double.

0

Tak ale konwersja niejawna zachodzi tylko w pewnych określonych sytuacjach, zgodnie z określoną hierarchią i tylko jeśli nie ma słowa explicit.

1 użytkowników online, w tym zalogowanych: 0, gości: 1