Ich habe noch nie zuvor in C++, aber es ist seltsam, dass es noch kompiliert, aber nicht das tut, was ich erwartet hatte. Kann mir jemand sagen, was es macht? Bitte beachten Sie den Code, weitere Informationen folgen.Instantiieren einer Klasse in C++: Seltsame Syntax Bug
#include <iostream>
using namespace std;
class Test{
public:
Test();
};
Test::Test(){ cout << "ctor" << endl; }
int main(void){
Test t(); // this compiles but doesn't call the constructor
return(0);
}
Es wird kompilieren, aber wenn ich versuche, "t" zu verwenden, wird es nicht. Ich war nur von der Konstruktorfunktionalität abhängig und mein Code funktionierte nicht wie erwartet. Die Lösung besteht darin, die Klammer "Test t()" zu verlieren. zu "Test t;". Meine Frage ist, was im "Test t()" vor sich geht; Beispiel, und was denkt der Compiler, dass er es kompilieren lässt.
Suchen drängendsten Parse. – chris
Willkommen zu Ihrem Ritus der Passage. –
Die Frage ist ... wusste der Compiler, was Sie erwartet haben? :) – Carl