现在的位置: 首页 > 综合 > 正文

C++_运算符重载

2016年08月30日 ⁄ 综合 ⁄ 共 732字 ⁄ 字号 评论关闭
//***** 运算符重载 *****
class Num
{
public:
    Num()
    {
        std::cout << "构造函数..." << std::endl;
        i = 10;
    }
    ~Num()
    {
        std::cout << "析构函数..." << std::endl;
    }
    void operator++()  // 运算符重载函数就是在这里,operator是C++关键字,++代表的是对++这个运算符重载,这是前置运算符重载
    {
        ++ i;  // 成员变量自加
    }
    //const Num operator+(const Num &r)  // 加法运算符重载
    //{
        //i + r.GetValue();
    //}
    void SetValue(int x)
    {
        i = x;
    }
    int GetValue()
    {
        return i;
    }
private:
    int i;
};

//***** 运算符重载应用 *****
void test1()
{
    Num m_Num;
    std::cout << "没有运算符重载的i的值:" << m_Num.GetValue() << std::endl;

    ++m_Num;  // 运算符重载使用,对象要能够自加,必须重载自加运算符
    std::cout << "有运算符重载的i的值:" << m_Num.GetValue() << std::endl;

    //Num a;
    //Num b;
    //Num c = a + b;
    /*
    为什么对象自加,会调用运算符重载函数,是因为在C++中,一切运算符运算操作,都是通过函数来进行的。
    例如: 1 + 2,C++编译器就自动查找标准库,找到一个这样的运算符重载函数来进行运算:operator+(int,int)
    例如: 1.2 + 1.3,C++编译器就自动查找标准库,找到一个这样的运算符重载函数来进行运算:operator+(float,float)
    其余的形式同样的道理
    */
}

//

【上篇】
【下篇】

抱歉!评论已关闭.