C++ 使用构造函数从函数返回对象
示例类:C++ 使用构造函数从函数返回对象,c++,C++,示例类: class myclass { int a; int b; public: myclass() {} myclass(int x, int y) { a = x; b = y; } }; 功能: myclass function() { return myclass(2, 3); } 我不明白这句话: return myclass(2, 3); 怎么可能像这样返回对象? 看起来正在使用复制构造函数,但构造函数不应返回任何值?(请使用
class myclass
{
int a;
int b;
public:
myclass() {}
myclass(int x, int y)
{
a = x;
b = y;
}
};
功能:
myclass function()
{
return myclass(2, 3);
}
我不明白这句话:
return myclass(2, 3);
怎么可能像这样返回对象?
看起来正在使用复制构造函数,但构造函数不应返回任何值?(请使用c++初学者语言)返回语句有一个:
return
表达式,其中表达式可转换为函数返回类型
因此myclass(2,3)
可以转换为返回类型(它是相同的类型)。您还可以使用return{2,3}代码>
从链接中,我们还注意到:
按值返回可能涉及构造和复制/移动
临时对象,除非已使用
return语句有一个:return
表达式,其中表达式可转换为函数返回类型
因此myclass(2,3)
可以转换为返回类型(它是相同的类型)。您还可以使用return{2,3}代码>
从链接中,我们还注意到:
按值返回可能涉及构造和复制/移动
临时对象,除非已使用
myclass(2,3)
是一个表达式,其计算结果为类型为myclass
的新(临时)对象,通过调用myclass::myclass(int,int)
构造函数构造
返回myclass(2,3)
使用该表达式的值(新构造的myclass
)作为函数函数的返回值。这又可能调用复制构造函数来复制从临时位置的值,在该临时位置中,它已经构建为返回值的任何位置(在最近的C++标准中应该是强制性的)。<> >代码> MyC类(2, 3)< /C> >是一个表达式,计算为新的(临时的)类型为myclass
的对象,通过调用myclass::myclass(int,int)
构造函数构造
返回myclass(2,3)
使用该表达式的值(新构造的myclass
)作为函数函数的返回值。这又可能调用复制构造函数来复制从临时位置的值,在该位置上,它已经构建为返回值的任何位置(在某些C++标准中应该是强制性的)。< /P> < P>语句< /P>
return myclass(2, 3);
做两件事:
首先创建一个临时对象。这就是myclass(2,3)
所做的。它创建一个对象,调用相应的构造函数
通过值返回临时对象,这意味着它已被复制(或者更可能的是,该副本被作为返回值优化的一部分省略)
声明
return myclass(2, 3);
做两件事:
首先创建一个临时对象。这就是myclass(2,3)
所做的。它创建一个对象,调用相应的构造函数
通过值返回临时对象,这意味着它已被复制(或者更可能的是,该副本被作为返回值优化的一部分省略)
不知道你不懂什么。它通过调用构造函数来创建一个myclass
对象,然后从function()
myclass(2,3)
返回该对象。例如,您可以执行myclass A=myclass(2,3)代码>。我第一次偶然发现类似“class_name(..)这样的语法,发现它返回的是object?从来没有看到它被用于任何C++初学者的书籍。CurimyNoX(…)是对构造函数的调用。请注意,构造函数的名称与类定义中定义的名称完全相同。谢谢,现在我至少了解了诸如“myclass obj=myclass(2,3)”或“myclass*ptr=&(myclass(2,3))之类的表达式;”在C++中有效,但不确定您不理解的内容。它通过调用构造函数来创建一个myclass
对象,然后从function()
myclass(2,3)
返回该对象。例如,您可以执行myclass A=myclass(2,3)代码>。我第一次偶然发现类似“class_name(..)这样的语法,发现它返回的是object?从来没有看到它被用于任何C++初学者的书籍。CurimyNoX(…)是对构造函数的调用。请注意,构造函数的名称与类定义中定义的名称完全相同。谢谢,现在我至少了解了诸如“myclass obj=myclass(2,3)”或“myclass*ptr=&(myclass(2,3))之类的表达式;”在C++中有效