Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.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
C++ 成员函数能否创建同一类的对象?_C++_Class_Object - Fatal编程技术网

C++ 成员函数能否创建同一类的对象?

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

成员函数(“add”)能否创建其类(“distance”)的对象(“k”)并返回如下代码示例所示的相同值

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)
,这样它就可以作为默认构造函数使用。但要三思而后行;只允许使用指定的值进行构造可能不会太容易出错。如果我在创建对象时已将默认值传递给构造函数,那么它不会工作吗?