标题:关于 operrator 重载 问题 (a-b).DigitalShow ();//结果不对 ??
只看楼主
haoyasen
Rank: 2
等 级:论坛游民
帖 子:90
专家分:20
注 册:2013-3-30
结帖率:91.67%
已结贴  问题点数:20 回复次数:7 
关于 operrator 重载 问题 (a-b).DigitalShow ();//结果不对 ??
#include<iostream>
using namespace std;
class  Digital{
int num;
public :
    Digital(){}
    Digital(int a ){num=a;}
    ~Digital(){}
    Digital & operator -(const Digital  & a)
    {
        
        return Digital(this->num-a.num);
    }
    void DigitalShow()
    {
        cout<<num<<endl;
    }

void main()
{
    Digital a(4),b(3);      
    (a-b).DigitalShow ();//结果不对
搜索更多相关主题的帖子: namespace void public return 
2013-05-18 11:36
haoyasen
Rank: 2
等 级:论坛游民
帖 子:90
专家分:20
注 册:2013-3-30
得分:0 
柜等大婶 ,其实别的重载函数可以 为啥这个不行呢
2013-05-18 11:37
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:7 
你这代码,有那么一点点的语法正确的地方吗?

程序代码:
#include <iostream>

class Digital
{
public :
    Digital( int val=0 ) : num_(val)
    {
    }
    Digital operator-( const Digital& d ) const
    {
        return Digital(num_-d.num_);
    }

private:
    int num_;

    friend std::ostream& operator<<( std::ostream& os, const Digital& d );
};

std::ostream& operator<<( std::ostream& os, const Digital& d )
{
    return os << d.num_;
}

using namespace std;

int main()
{
    Digital a(4), b(3);     

    cout << (a-b) << endl;

    return 0;
}

2013-05-18 12:11
haoyasen
Rank: 2
等 级:论坛游民
帖 子:90
专家分:20
注 册:2013-3-30
得分:0 
回复 3楼 rjsp
没有  谢谢大神 先 ,我先 看你的代码
2013-05-18 12:23
haoyasen
Rank: 2
等 级:论坛游民
帖 子:90
专家分:20
注 册:2013-3-30
得分:0 
回复 3楼 rjsp
大神你的很规范   我的错误是 没重写<<  运算符对吧  。然后 我想问的是 :
 Digital & operator -(const Digital  & a)
    {
        
        return Digital(this->num-a.num);
    }
    void DigitalShow()
    {
        cout<<num<<endl;
    }
我当时想的是 就 调用 (a-b ).DigitalShow()编译器也没报错啊  为啥 就是 结果不对啊
麻烦细细解释一下把

2013-05-18 12:37
机器王者
Rank: 2
等 级:论坛游民
帖 子:6
专家分:16
注 册:2013-3-24
得分:7 
#include<iostream>
using namespace std;
class  Digital{
int num;
public :
    Digital(){}
    Digital(int a){num=a;}
    ~Digital(){}
    Digital & operator -(const Digital  &a)
    {
        
        return Digital(this->num-a.num);
    }
    void DigitalShow()
    {
        cout<<num<<endl;
    }
};  //你这里都少了分号
int main()
{
    Digital a(4),b(3),c;
    c=a-b;
    c.DigitalShow();   //我觉得这里应该这样写,应用对象调用成员函数吧,而不是数值((a-b)=1)
}
2013-05-20 21:53
haoyasen
Rank: 2
等 级:论坛游民
帖 子:90
专家分:20
注 册:2013-3-30
得分:0 
回复 6楼 机器王者
a-b  是一个  对象把  算不算
2013-05-20 22:44
不要脸的猫
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:41
专家分:126
注 册:2012-6-20
得分:7 
该程序重载的减法运算符返回的是一个临时变量,不能够在operator前加引用运算符,即不能返回一个临时变量的引用!!

埋骨何须桑梓地,人生无处不青山
2013-05-21 15:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-407401-1-1.html




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

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