以前に、これが悪いと考えられる理由を尋ねました。
class Example
{
public:
Example(void);
~Example(void);
void f() {}
}
int main(void)
{
Example ex(); // <<<<<< what is it called to call it like this?
return(0);
}
これで、タイプ Example を返す代わりに関数プロトタイプを作成していることがわかります。ただし、g ++およびMS VC ++で機能する理由はまだわかりません。
私の次の質問は、上記を使用することです。この呼び出しは有効ですか?
int main(void)
{
Example *e = new Example();
return(0);
}
? それと単純に Example e() を呼び出すことの違いは何ですか??? 私が知っているように、それは関数プロトタイプですが、一部のコンパイラはそれを許し、デフォルトのコンストラクターを呼び出すことを許可しているようです? 私もこれを試しました:
class Example
{
private:
Example();
public:
~Example();
};
int main(void)
{
Example e1(); // this works
Example *e1 = new Example(); // this doesn't
return(0);
}
だから私は少し混乱しています:(これが何百万回も聞かれたらごめんなさい。