C ++ 11 Unterschied in Konstruktoren (geschweifte Klammern)
Ich bin ziemlich neu in C ++ und habe festgestellt, dass die folgenden Codezeilen anders funktionieren
MyClass c1;
c1.do_work() //works
MyClass c2();
c2.do_work() //compiler error c2228: left side is not a class, structure, or union.
MyClass c3{};
c3.do_work() //works
mit einer Header-Datei als
class MyClass {
public:
MyClass();
void do_work();
};
Können Sie mir erklären, worin der Unterschied zwischen den drei Arten der Objekterstellung besteht? Und warum führt der zweite Weg zu einem Compilerfehler?