C++ 为什么我可以在没有对象声明的情况下使用构造函数?

C++ 为什么我可以在没有对象声明的情况下使用构造函数?,c++,constructor,C++,Constructor,为什么我可以在没有对象声明的情况下使用构造函数?如果前面的方法有效,为什么在使用k()时会出现错误? 这是我的密码: #include <iostream> using namespace std; class Test { int i, x; public: Test(int ii = 0) { cout<<"WOW!"; cout<<i<<" "; i=ii; } void k

为什么我可以在没有对象声明的情况下使用构造函数?如果前面的方法有效,为什么在使用k()时会出现错误? 这是我的密码:

#include <iostream>
using namespace std;

class Test
{
int i, x;
public:
Test(int ii = 0)
{
    cout<<"WOW!";
    cout<<i<<" ";

    i=ii;
}
void k()
{
    cout<<i<<" ";
}
};

int main()
{
    Test();
    k();    ///k was not declared in this scope

    return 0;
 }

#包括
使用名称空间std;
课堂测试
{
int i,x;
公众:
测试(int ii=0)
{

cout您可以创建类的实例,因为可以通过当前(本例中为全局)命名空间中的名称查找找到类的名称,并且已经定义了类

您尚未以名称
k
声明自由函数,因此无法调用此类函数

int main()
{
    Test t;
    t.k();

    return 0;
}
为什么我可以在没有对象声明的情况下使用构造函数

构造函数用于创建新对象。因此不能对以前的对象调用它

如果前面的方法有效,为什么在使用k()时会出现错误

因为
k()
是一种非静态的
Test
方法,所以它需要一个
Test
对象来调用它。您不能将其作为独立函数调用

int main()
{
    Test t;
    t.k();

    return 0;
}

您可以创建没有名称的临时对象。为什么您希望在没有对象的情况下调用
k
(上一行的对象在您尝试调用
k
时被销毁)。
Test()
main
中创建一个类型为
Test
的临时对象,并立即将其销毁。构造函数是静态函数吗?@star\u man96不,不是。请查看