调用这样的类是什么意思:
class Example
{
public:
Example(void);
~Example(void);
}
int main(void)
{
Example ex(); // <<<<<< what is it called to call it like this?
return(0);
}
Run Code Online (Sandbox Code Playgroud)
就像在这种情况下它似乎没有调用默认构造函数一样.有人可以说明为什么会这么糟糕吗?
谢谢你的所有答案.
早些时候我问为什么这被认为是坏的:
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);
}
Run Code Online (Sandbox Code Playgroud)
现在,我知道它正在创建一个函数原型而不是返回一个类型的示例.我仍然不明白为什么它可以在g ++和MS VC++中工作.
我的下一个问题是使用上述问题,这个电话会有效吗?
int main(void)
{
Example *e = new Example();
return(0);
}
Run Code Online (Sandbox Code Playgroud)
?有什么区别,只需调用Example e()??? 就像我知道它是一个函数原型,但似乎有些编译器会原谅并允许它调用默认的构造函数?我也试过这个:
class Example
{
private:
Example();
public:
~Example();
};
int main(void)
{
Example e1(); // this works
Example *e1 = new Example(); // this doesn't
return(0);
}
Run Code Online (Sandbox Code Playgroud)
所以我有点困惑:(对不起,如果这被问了一百万次.