为什么我可以在没有先前对象声明的情况下使用构造函数?而且,如果以前的工作正常,为什么在使用 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;
}
答案 0 :(得分:1)
为什么我可以在没有先前对象声明的情况下使用构造函数?
构造函数用于创建一个新对象。所以不能在之前的对象上调用它。
<块引用>而且,如果以前的方法有效,为什么我在使用 k() 时会出错?
因为 k()
是 Test
的一个非静态方法,所以它需要一个 Test
对象来调用它。您不能将其作为独立函数调用。
int main()
{
Test t;
t.k();
return 0;
}
答案 1 :(得分:0)
您可以创建类的实例,因为可以通过名称查找从当前(在本例中为全局)命名空间中找到类的名称,并且该类已经定义。
您尚未通过名称 k
声明自由函数,因此您无法调用此类函数。