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

时间:2021-03-26 21:45:17

标签: 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()
{
    cout<<i<<" ";
}
};

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

    return 0;
 }

2 个答案:

答案 0 :(得分:1)

<块引用>

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

构造函数用于创建一个新对象。所以不能在之前的对象上调用它。

<块引用>

而且,如果以前的方法有效,为什么我在使用 k() 时会出错?

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

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

    return 0;
}

答案 1 :(得分:0)

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

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