Instanz einer Klasse erstellen

Was ist der Unterschied zwischen den Zeilen 1, 2, 3, 4?

Wann benutze ich jeweils?

Warum druckt Zeile 3 dieconstructor Foo und Zeile 7 gibt einen Fehler zurück und Zeile 8 nicht?

#include <iostream>     
using namespace std;

class Foo
 {
   public:
   Foo ( )
   {
      cout << "constructor Foo\n";
   }               
};

class Bar
 {
   public:
   Bar ( Foo )
   {
      cout << "constructor Bar\n";
   }
};

int main()
{
   /* 1 */ Foo* foo1 = new Foo ();
   /* 2 */ Foo* foo2 = new Foo;
   /* 3 */ Foo foo3;
   /* 4 */ Foo foo4 = Foo::Foo();

   /* 5 */ Bar* bar1 = new Bar ( *new Foo() );
   /* 6 */ Bar* bar2 = new Bar ( *new Foo );
   /* 7 */ Bar* bar3 = new Bar ( Foo foo5 );
   /* 8 */ Bar* bar3 = new Bar ( Foo::Foo() );

   return 1;
}

Antworten auf die Frage(3)

Ihre Antwort auf die Frage