对的,函数体内返回值写 return *this
对的,返回的是这个对象的引用
【以下回答由 GPT 生成】
问题标题: 成员函数类型是该类类型的引用, 这样设置是对的吗, 最后是返回一个对象?
问题回答:
是的,设置成员函数的返回类型为该类类型的引用是可以的。这种返回类型通常用于链式调用,它允许对同一个对象连续调用多个成员函数,提高代码的可读性。
对于你提到的setbkcolor
函数,它返回的是Data&
类型,即该类类型的引用。这意味着它返回的是调用该函数的对象本身的引用。所以,你可以像下面这样使用该函数:
Data obj;
obj.setbkcolor(123);
然而,要注意的是,返回一个引用并不意味着返回了一个新的对象。它只是返回该函数所作用的对象本身的引用。因此,setbkcolor
函数并不会实际上返回一个新的对象。它只是修改了调用该函数的对象的某些属性,并返回了该对象的引用。
如果你想在该函数中返回一个新的对象,你可以使用拷贝构造函数或移动构造函数来实现:
class Data {
public:
Data(int bkcolor) : _bkcolor(bkcolor) {}
Data(const Data& other) : _bkcolor(other._bkcolor) {}
Data setbkcolor(int bkcolor) {
return Data(bkcolor);
}
private:
int _bkcolor;
};
然后就可以这样使用该函数:
Data obj1;
Data obj2 = obj1.setbkcolor(123);
在这个例子中,调用setbkcolor
函数会返回一个新的Data
对象,该对象拥有新指定的背景色。
【相关推荐】