C++中,默认赋值运算符函数的返回值是什么类型的?

同类对象相互赋值,调用默认赋值运算符函数,这个函数的返回值是?... 同类对象相互赋值,调用默认赋值运算符函数,这个函数的返回值是? 展开
 我来答
匿名用户
推荐于2016-06-26
展开全部

形如

A a;
A b(a);
A c=a;

调用的是复制构造函数。

形如

A a;
A b;
a=b;

调用的是赋值运算符重载函数。

现在回答你的问题。赋值运算符重载的惯用格式是

A A::operator=(A &a)
{
    //……
    return *this;
}

也即,返回值是这个类的对象,且是“=”左边对象本身(赋值后)。

函数中不返回值(返回void)理论上也可以完成赋值,缺点在于不能连续赋值。

函数中不返回*this而返回临时对象理论上也可以完成赋值,缺点在于内存和效率的浪费。

另外形如(a=b)++这样的操作也不能达到预期的效果。

追问
太强悍了啊!顺便想再问下  int a;  ++a;  这个调用默认运算符函数后,返回的是副本还是新的a本身?
追答
前置/后置自增/自减运算符重载惯用的做法也是返回本身。
风若远去何人留
推荐于2018-05-07 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20403 获赞数:450142
专业C/C++软件开发

向TA提问 私信TA
展开全部

默认赋值运算符函数返回值为本身类的一个对象。

比如

class test
{
    int a;
   public:
    test(){}
};

这个类它的默认赋值运算符函数的定义,就是

test operator=(const test & v);

的格式。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
晴远空
2013-07-21 · 超过23用户采纳过TA的回答
知道答主
回答量:66
采纳率:0%
帮助的人:30.3万
展开全部
一般默认为int型,若是类似于double name(){ 内容赋值;},默认为double型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-21
展开全部
为空(void)或返回两对象之一(是谁要看情况),不过一般是void。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Hiei1234
2013-07-21 · TA获得超过157个赞
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:130万
展开全部
对象1 = 对象2 = 对象3

const this_type&;

class A
{
typedef A this_type;

const this_type& operator=(const this_type& right)
{
//member set;
return * this;
}
};

变量类型 变量名 = 初值;

这个调用的是构造函数
追问
A  a;

A b;

a =b;//这样的赋值,是调用运算符函数
追答
是的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式