繁体   English   中英

类成员函数返回类型

[英]class member function return type

我在设计课程时遇到了问题;

class A
{
    friend ostream& operator<<(ostream& os, const A rhs);
public: 
    A do()
    { 
       A newobject;
       newobject = *this/2
       return newobject;
    }
private:
    vector<double>
}

假设我有一个A object{1.0,2.0,3.0}那么object.do()应该是{0.5,1.0,1.5}

但是当我想打印结果时

A object
cout<<object<<object.do();

它会导致一个错误,它似乎newobject调用成员函数之后被删除object.do()

然后我改变了do()函数

A& do()
{ 
   return *this/2
}

然后cout<<object<<object.do(); 结果是[0.5,1.0,1.5][0.5,1.0,1.5]

预期结果应为[1.0,2.0,3.0][0.5,1.0,1.5]

我有一些问题: 1.如何得到预期的结果? 2.对于第二个do()函数,为什么cout结果是[0.5,1.0,1.5][0.5,1.0,1.5] do()函数更改了 object 的成员,但我在调用object.do()之前cout object 我认为第二种情况应该得到预期的结果。 我想知道重载的operator<<或其他部分是否有问题?

A& do()
{ 
   return *this/2
}

并且您期望从[0.5,1.0,1.5]获得[1.0,2.0,3.0] ,我假设您希望您的班级包装支持算术运算的向量? 运算符重载是你的朋友。 再给一个提示,如果您重载运算符/使其将底层向量值除以 rhs 值, do()将执行您想要的操作。 此外,您将不再需要do() - 您可以调用cout << object/2并且它会打印您想要的内容。 尝试一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM