注册 登录
编程论坛 C++教室

关于 operrator 重载 问题 (a-b).DigitalShow ();//结果不对 ??

haoyasen 发布于 2013-05-18 11:36, 771 次点击
#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 ();//结果不对
7 回复
#2
haoyasen2013-05-18 11:37
柜等大婶 ,其实别的重载函数可以 为啥这个不行呢
#3
rjsp2013-05-18 12:11
你这代码,有那么一点点的语法正确的地方吗?

程序代码:
#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;
}

#4
haoyasen2013-05-18 12:23
回复 3楼 rjsp
没有  谢谢大神 先 ,我先 看你的代码
#5
haoyasen2013-05-18 12:37
回复 3楼 rjsp
大神你的很规范   我的错误是 没重写<<  运算符对吧  。然后 我想问的是 :
 Digital & operator -(const Digital  & a)
    {
        
        return Digital(this->num-a.num);
    }
    void DigitalShow()
    {
        cout<<num<<endl;
    }
我当时想的是 就 调用 (a-b ).DigitalShow()编译器也没报错啊  为啥 就是 结果不对啊
麻烦细细解释一下把

#6
机器王者2013-05-20 21:53
#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)
}
#7
haoyasen2013-05-20 22:44
回复 6楼 机器王者
a-b  是一个  对象把  算不算
#8
不要脸的猫2013-05-21 15:44
该程序重载的减法运算符返回的是一个临时变量,不能够在operator前加引用运算符,即不能返回一个临时变量的引用!!
1