Ранее я спрашивал, почему это считается плохим:
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);
}
Так что я немного запутался :( Извините, если об этом спрашивали миллион раз.