为什么不使用“foo f();”调用类“foo”的构造函数?

发布于 2025-01-02 20:17:30 字数 557 浏览 0 评论 0原文

可能的重复:
为什么使用空括号调用不带参数的构造函数会出错?

我遇到了以下问题。我创建了 2 个 foo 实例。 然后我意识到, foo f(); 没有执行类的构造函数。这是为什么?

class foo{
public:
    foo() {cout <<"executed contructor...";}
};

int main() {
    foo f(); // doesn't run the ctor???? why?
    foo f2; // this one does execute the ctor


    system("pause");
    return 0;
}

Possible Duplicate:
Why is it an error to use an empty set of brackets to call a constructor with no arguments?

I bumped into the following problem. I created 2 instances of foo.
Then I realized, that foo f(); didn't execute the contructor of a class. Why is that?

class foo{
public:
    foo() {cout <<"executed contructor...";}
};

int main() {
    foo f(); // doesn't run the ctor???? why?
    foo f2; // this one does execute the ctor


    system("pause");
    return 0;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

等风也等你 2025-01-09 20:17:30

第一个声明一个函数。尝试访问名为f的对象。编译器会抱怨:f 具有非类类型 foo (),这意味着它是一个不带参数并返回 foo 类型的对象的函数。

The first declares a function. Try to access the object named f. The compiler will complain along the lines: f has non class type foo (), which means it is a function taking no arguments and returning an object of type foo.

背叛残局 2025-01-09 20:17:30

检查 C++ 常见问题解答问题 10.2:

[10.2]List x; 之间有什么区别吗?和列表 x();?

http://www.parashift.com/c++-faq-lite /ctors.html#faq-10.2

Check C++ FAQ question 10.2:

[10.2] Is there any difference between List x; and List x();?

http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.2

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文