これまで C++ でこれに遭遇したことはありませんが、それでもコンパイルできるのに期待どおりに動作しないのは奇妙です。誰かがそれが何をするのか教えてもらえますか? コードを参照してください。詳細は次のとおりです。
#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);
}
コンパイルされますが、「t」を使用しようとするとコンパイルされません。コンストラクターの機能のみに依存していたため、コードが期待どおりに機能しませんでした。解決策は、括弧「Test t();」をなくすことです。「テストt;」に。私の質問は、「Test t();」で何が起こっているかです。例、そしてコンパイラーがコンパイルできるようにするために何が起こっているとコンパイラーは考えていますか。