C++ 成员函数能否创建同一类的对象?
成员函数(“add”)能否创建其类(“distance”)的对象(“k”)并返回如下代码示例所示的相同值C++ 成员函数能否创建同一类的对象?,c++,class,object,C++,Class,Object,成员函数(“add”)能否创建其类(“distance”)的对象(“k”)并返回如下代码示例所示的相同值 class distance { int feet; float inches; public: distance(int feet, float inches) { this->feet=feet; this->inches=inches; } distance add(distan
class distance
{
int feet;
float inches;
public:
distance(int feet, float inches)
{
this->feet=feet;
this->inches=inches;
}
distance add(distance d)
{
distance k;
k.feet=feet+10;
k.inches=inches+8;
return k;
}
};
distance e(0,0.0);
是的,您可以在其任何方法中创建同一类的对象是的,您可以在其任何方法中创建同一类的对象是的:只要类是可复制的(因为它是)或可移动的,您就可以从任何函数(包括它自己的成员函数)返回实例。但是,
distance k;
因为没有默认构造函数,所以无法工作。相反,请使用可用的构造函数:
return distance(feet+10, inches+8);
(您可能还想更正第二个构造函数参数的名称;实际上,您正在将
inches
成员设置为其自己的未初始化值。并且add
可能想对其参数执行一些操作,而不仅仅是添加任意常量。)是:只要类是可复制的(就这样)或可移动的,您可以从任何函数(包括其自身的成员函数)返回实例。但是,
distance k;
因为没有默认构造函数,所以无法工作。相反,请使用可用的构造函数:
return distance(feet+10, inches+8);
(您可能还需要更正第二个构造函数参数的名称;实际上,您正在将
inches
成员设置为其自己的未初始化值。并且add
可能需要对其参数执行某些操作,而不仅仅是添加任意常量。)当然,但是定义一个默认的构造函数。你为什么不试试呢?我可以随意修改你的打字错误。如果这些是你问题的原因,那就接受吧。否则就不清楚你在问什么了。当然,但是定义一个默认构造函数。你为什么不试试呢?我可以随意修改你的打字错误。如果这些是你问题的原因,那就接受吧。否则就不清楚你在问什么。Sry,我犯了个错误。我现在已经更改了第二个构造函数参数。我该如何绘制这个类的默认构造函数来使用“距离k”?谢谢。@h8pathak:如果您真的想要一个默认构造函数,那么可以编写一个类似于distance():feet(0),inches(0){}
,或者将默认值添加到现有构造函数的参数distance(int feet=0,float inches=0)
,这样它就可以作为默认构造函数使用。但要三思而后行;只允许使用指定的值进行构造可能不太容易出错。因为我在创建对象时已将默认值传递给构造函数,所以它不起作用吗?是的,我在那里犯了一个错误。我现在已经更改了第二个构造函数参数。我该如何绘制这个类的默认构造函数来使用“距离k”?谢谢。@h8pathak:如果您真的想要一个默认构造函数,那么可以编写一个类似于distance():feet(0),inches(0){}
,或者将默认值添加到现有构造函数的参数distance(int feet=0,float inches=0)
,这样它就可以作为默认构造函数使用。但要三思而后行;只允许使用指定的值进行构造可能不会太容易出错。如果我在创建对象时已将默认值传递给构造函数,那么它不会工作吗?