即使我定义了一个,我的默认构造函数也没有被调用

My default constructor is not being called even though I have defined one

本文关键字:构造函数 默认 我的 调用 一个 定义      更新时间:2023-10-16

对我对C 的理解,我一直认为我应该能够执行以下操作并以这种方式调用默认构造函数:

#include <iostream>
void do_some_work() {
    std::cout << "Doing some work" << std::endl;
}
void do_something_else() {
    std::cout << "Doing something else." << std::endl;
}

class background_task
{
public:
    background_task()
    {
        std::cout << "Calling the constructor!" << std::endl;
    }
};
int main()
{
    background_task f();
    getchar();
    return 0;
}

执行上面的程序后,我看到我提供了默认的构造函数,相反,它只是空白,并且在屏幕上没有输出消息。我知道我应该这样称呼它:

background_task f;

当我这样做时,它通常调用我的默认构造函数,并且在屏幕上看到打印。我想知道为什么在第一种情况下它没有任何东西,如果没有崩溃,那是不合法的吗?

这看起来像是最烦人的解析的情况。用background_task f{}替换background_task f(),以确保您声明变量而不是函数。