成员函数可以创建相同类的对象吗?

时间:2014-08-30 16:24:06

标签: c++ class object

成员函数("添加")可以创建其类的对象(" 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);

2 个答案:

答案 0 :(得分:7)

是:只要一个类是可复制的(如本)或可移动的,您就可以从任何函数(包括它自己的成员函数)返回一个实例。但是,这个

distance k;

将无效,因为没有默认构造函数。相反,使用可用的构造函数:

return distance(feet+10, inches+8);

(您可能还需要更正第二个构造函数参数的名称;实际上,您将inches成员设置为其未初始化的值。add可能想要执行某些操作使用其参数,不只是添加任意常量。)

答案 1 :(得分:2)

是的,您可以在其任何方法中创建同一类的对象