Forum: C++, explicit & implicit?

Forum huvudsida -> Programmering -> C++, explicit & implicit?

Sidor: 1

Till botten

olle 13:48 - 14:e Augusti 2006 | Post #1
Medlem
Inlägg: 57


Skicka PM
Hej igen.

Har lite funderingar kring explicit & implicit. Tänkte om någon kunde föklara vad det innebär etc. Testade själv lite grann genom att lägga till och ta bort explicit:

  1.  
  2. #include<iostream>
  3. using namespace std;
  4.  
  5. class A {
  6. public:
  7. explicit A(int x) : test(x) { }
  8. private:
  9. int test;
  10. };
  11.  
  12. void f(A) {}
  13.  
  14. A g(){
  15. A a1 = A(30);
  16. A a3(57);
  17. a1 = 67; // med explicit: a1 = A(67);
  18. f(77); // med explicit: f(A(77));
  19. return A(50);
  20. }
  21. int main(){
  22. g();
  23. return 0;
  24. }


Slutsatsen jag kom fram till är att om man lägger till explicit så sker det ingen konvertering automatiskt. Utan man måste själv definera operator= eller typomvandla om rad 17 ska fungerar och man måste själv typ omvandla i rad 18. Tar man bort explicit så att det blir implicit construktor så sker det automatiskt. Stämmer det?

Sen undrar jag varför man har detta huvudtaget? Vad är det till för?

hoppas de inte blev för mycket

-------------------------
Ingen signatur!



Sidor: 1

Forum huvudsida -> Programmering -> C++, explicit & implicit?
Atom feed

Du får inte posta i den här tråden | Till toppen