C++ 为什么我可以在没有对象声明的情况下使用构造函数?
为什么我可以在没有对象声明的情况下使用构造函数?如果前面的方法有效,为什么在使用k()时会出现错误? 这是我的密码: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
#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不,不是。请查看