| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 676 人关注过本帖
标题:=号操作符重载
只看楼主 加入收藏
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:4 
=号操作符重载
#include <iostream>
using std::cout;
using std::endl;

class base
{
public:
    int a;
    base & operator= (base const & a);
    base(){}
    base(base & a)
    {
        this->a=a.a+1;
        cout<<this->a<<"复制构造函数调用"<<endl;      
    }
};
base &base::operator =(base const &a)
{
    this->a=a.a+1;
    cout<<this->a<<"赋值函数调用"<<endl;
    return *this;
}

int _tmain(int argc, _TCHAR* argv[])
{
    base b1;
    b1.a=5;
    base b2=b1;
    getchar();
    return 0;
}


1 结果显示 6复制构造函数调用 问为什么不调用赋值函数
2 赋值函数可以定义为   void 类名::operator =(类名 const &) 吗?
搜索更多相关主题的帖子: 重载 操作符 
2010-04-06 11:48
yyblackyy
Rank: 6Rank: 6
等 级:侠之大者
帖 子:98
专家分:457
注 册:2010-3-31
收藏
得分:10 
看这一题首先要明白那些地方用到复制构造函数:
1:给对象初始化赋值 调用复制构造函数 比如 : A a(b);  A为类或其他  a,b 为A的对象 给a赋初值
2:传递参数的时候 调用复制构造函数          function(A a){.......}
3: 返回的时候 调用复制构造函数              A function(){ A a; ........ return a;}
在有用户自定义的复制构造函数时候优先使用,若没有,则考虑赋值函数,比如:
把 复制构造函数注释掉,则程序将调用赋值函数
****************************
void 类名::operator =(类名 const &) 当然可以了,若你不想表示成 连续赋值的形式,  比如: A a,b,c;  a=b=c;  若你是想表示成连续赋值的形式 则因该返回引用
2010-04-06 12:40
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
收藏
得分:0 
感谢楼上的回答

把 复制构造函数注释掉,则程序将调用赋值函数
好像这个程序  复制构造函数注释掉 也没调用赋值函数
是不是赋值函数定义有问题

-︻┻┳═一 ☆ 悲伤的代价就是让自己明白什么是最重要的和应该珍惜的
2010-04-06 13:15
yyblackyy
Rank: 6Rank: 6
等 级:侠之大者
帖 子:98
专家分:457
注 册:2010-3-31
收藏
得分:10 
int _tmain(int argc, _TCHAR* argv[])
{
    base b1;
    b1.a=5;
    base b2=b1;       看,你这里是“初始化”b2不是简单的赋值,所以不会调用赋值的那个函数
                        楼主只要改成  base b2;  b2=b1; 试试
    getchar();
    return 0;
}
2010-04-06 13:35
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
收藏
得分:0 
谢谢 结贴

-︻┻┳═一 ☆ 悲伤的代价就是让自己明白什么是最重要的和应该珍惜的
2010-04-06 13:42
快速回复:=号操作符重载
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038307 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved