Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class 创建没有变量的类对象_Class_Oop_Object_C++14 - Fatal编程技术网

Class 创建没有变量的类对象

Class 创建没有变量的类对象,class,oop,object,c++14,Class,Oop,Object,C++14,所以我创造了我的汽车。然后,我从我的车上为一个物体做了一个变量audi。一切都很好,但我注意到,我可以创建一个引擎值为50的对象,而无需为其指定变量。那么现在我如何访问该对象呢 #include <iostream> using namespace std; class Cars { public: int getStatus(); Cars(int engine=5); private: int m_engine; }; Cars::Cars(int e

所以我创造了我的汽车。然后,我从我的车上为一个物体做了一个变量audi。一切都很好,但我注意到,我可以创建一个引擎值为50的对象,而无需为其指定变量。那么现在我如何访问该对象呢

#include <iostream>

using namespace std;

class Cars
{
public:
    int getStatus();
    Cars(int engine=5);
private:
    int m_engine;
};
Cars::Cars(int engine)
{
    m_engine=engine;
    cout<<"A new car is made."<<endl;
}
Cars::getStatus()
{
    cout<<m_engine<<endl;
}

int main()
{
    Cars audi(10);
    audi.getStatus();
    Cars(50);

}

你不能!当你尝试的时候,它已经死了。Cars50是一个临时变量,其生命周期在其完整表达式结束时结束,也就是在

你不能!当你尝试的时候,它已经死了。Cars50是一个临时变量,其生命周期在其完整表达式结束时结束,也就是在

您需要一起完成,如下所示:

Cars(50).getStatus(); 
否则,您将无法引用您的50 m_发动机汽车


应忠实地使用此临时文件。请阅读

中的更多内容,您需要一起完成,如下所示:

Cars(50).getStatus(); 
否则,您将无法引用您的50 m_发动机汽车


应忠实地使用此临时文件。在

中阅读更多信息,这取决于您希望何时访问对象

Cars(50);
通过这段代码,您可以创建一个临时对象,该对象仅在当前语句i的执行期间存在。E直到代码的执行通过分号为止

Cars(50);
// I want to access the object here
在这种情况下:太晚了。临时文件已经被销毁,不再存在。再也没有机会回去了。但是,只要对象存在,您就可以使用它。G对其调用成员函数或将其传递给另一个函数:

Cars(10).doSomething();
// but right now (after the semicolon), the car doesn't exist any more
doSomethingElse(Cars(12));
// again, the object got destroyed

请注意,在上面的示例中,您创建了两个不同的实例,每个实例在到达分号时停止存在。也要注意,此时会调用对象的析构函数。

这取决于您希望何时访问对象

Cars(50);
通过这段代码,您可以创建一个临时对象,该对象仅在当前语句i的执行期间存在。E直到代码的执行通过分号为止

Cars(50);
// I want to access the object here
在这种情况下:太晚了。临时文件已经被销毁,不再存在。再也没有机会回去了。但是,只要对象存在,您就可以使用它。G对其调用成员函数或将其传递给另一个函数:

Cars(10).doSomething();
// but right now (after the semicolon), the car doesn't exist any more
doSomethingElse(Cars(12));
// again, the object got destroyed

请注意,在上面的示例中,您创建了两个不同的实例,每个实例在到达分号时停止存在。还要注意,此时会调用对象的析构函数。

Cars50.getStatus;例如,我试过了,它激活了构造函数,那么它会重新创建吗?你在创建一个对象,所以它当然会使用构造函数。我不确定你期望的是什么,也不确定你所说的“重新创建”是什么意思。我的意思是,它应该已经被创建了。我使用Cars50一次,然后在下一行Cars50.getStatus,两次我都得到一辆新车。对,你已经使用了Cars50两次,所以创建了两个对象。如果你想创建一个对象并让它保持不变,那么你需要一个变量。这些没有变量的对象被称为临时对象,因为它们不会停留很长时间;例如,我试过了,它激活了构造函数,那么它会重新创建吗?你在创建一个对象,所以它当然会使用构造函数。我不确定你期望的是什么,也不确定你所说的“重新创建”是什么意思。我的意思是,它应该已经被创建了。我使用Cars50一次,然后在下一行Cars50.getStatus,两次我都得到一辆新车。对,你已经使用了Cars50两次,所以创建了两个对象。如果你想创建一个对象并让它保持不变,那么你需要一个变量。这些没有变量的对象被称为临时对象,因为它们不会停留很长时间;?或者一些功能卡50@john我认为现在OP指的是在那一行之后,没有修改,即问题中有一个空行。我从你的评论中得知,我是这里最笨的一个。你可能是对的,不会是第一个问问题不清楚的新手。那么Cars50.getStatus;,有什么问题吗;?或者一些功能卡50@john我认为现在OP指的是在那一行之后,没有修改,即问题中有一个空行。我从你的评论中得知,我是这里最笨的一个。你可能是对的,我不会是第一个以不清楚的方式问问题的新手。