• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-145  評(píng)論-173  文章-70  trackbacks-0
            以下是main.h的內(nèi)容 
            1
            #include <iostream>
             2#include <string>
             3using namespace std;
             4
             5class Sales_item
             6{
             7public :
             8    Sales_item(string s,int num1,float price1);
             9    Sales_item();
            10    ~Sales_item(){}
            11    Sales_item& operator =(const Sales_item& s1);
            12    Sales_item& operator += (Sales_item& s1);
            13    friend ostream& operator<<(ostream& out,const Sales_item& s1);
            14    friend istream& operator>>(istream& in,Sales_item& s1);
            15    friend bool operator ==(Sales_item& s1,Sales_item& s2); //friend是與操作數(shù)相同的
            16    friend bool operator !=(Sales_item& s1,Sales_item& s2);
            17    friend Sales_item operator +(Sales_item& s1,Sales_item& s2);
            18    friend Sales_item operator -(Sales_item& s1,Sales_item& s2);
            19private:
            20    std::string isbn;  //書目編號(hào)
            21    int num;      //書的數(shù)目
            22    float total;  //書的單價(jià)
            23}
            ;
            24
            25Sales_item::Sales_item(string s, int num1, float price1)
            26{
            27    isbn = s;
            28    num= num1;
            29    total = price1;
            30}

            31Sales_item::Sales_item()
            32{
            33    isbn = "";      //賦值不同于初始化,這里是不能用括號(hào)初始化的
            34    num = 0;
            35    total = 0;
            36}

            37Sales_item& Sales_item::operator =(const Sales_item& s1)    //類外部定義的時(shí)候總是沒有加限定符
            38{
            39    this->isbn = s1.isbn;
            40    this->num = s1.num;
            41    this->total = s1.total;
            42    return *this;
            43}

            44Sales_item& Sales_item::operator +=(Sales_item& s1)
            45{
            46    this->isbn += s1.isbn;
            47    this->num += s1.num;
            48    this->total += s1.total;
            49    return *this;
            50}

            51ostream& operator<<(ostream& out,const Sales_item& s1) //類的外部就不能在用friend不允許位于類定義之外
            52{
            53    out << s1.isbn << "\t" << s1.num << "\t" << s1.total;
            54    return out;
            55}

            56istream& operator>>(istream& in,Sales_item& s1)
            57{
            58    double price;
            59    in >> s1.isbn >> s1.num >> price;
            60    if (in)
            61        s1.total = s1.num * price;
            62    else
            63        s1 = Sales_item();
            64    return in;
            65}

            66bool operator ==(Sales_item& s1,Sales_item& s2)
            67{
            68    return s1.isbn==s2.isbn && s1.num==s2.num && s1.total==s2.total;
            69}

            70bool operator !=(Sales_item& s1,Sales_item& s2)
            71{
            72    return (s1.isbn!=s2.isbn)|| (s1.num!=s2.num)|| (s1.total!=s2.total);
            73    /*return !(s1==s2);*/
            74}

            75Sales_item operator +(Sales_item& s1,Sales_item& s2)
            76{
            77    if (s1 == s2)
            78        return Sales_item(s1.isbn,s1.num+s2.num,s1.total+s2.total);
            79    else
            80        return Sales_item();
            81}

            82Sales_item operator -(Sales_item& s1,Sales_item& s2)
            83{
            84    if (s1 == s2)
            85        return Sales_item(s1.isbn,s1.num-s2.num,s1.total-s2.total);
            86    else
            87        return Sales_item();
            88}
            下面是main.cpp
            :
             1#include <iostream>
             2#include "main.h"
             3using namespace std;
             4
             5int main()
             6{
             7    Sales_item s1,s2;
             8    cin >> s1 >> s2;
             9    cout << s1 << endl << s2 << endl;
            10    if (s1 == s2)
            11    {
            12        cout << "equal" << endl;
            13        cout << s1+s2 << endl;
            14    }

            15    if (s1 != s2)
            16        cout << "not equal" << endl;
            17    return 0;
            18}
            當(dāng)然,寫這個(gè)代碼的時(shí)候覺得很多問題都沒有考慮清楚,不過最后還是解決了問題:
            1.在書寫過程中忘記了類型限定符。
            2.細(xì)節(jié)問題。
            3.函數(shù)的命名空間

            現(xiàn)在我想說的是:
            關(guān)于重載!=的時(shí)候遇到的問題,開始的時(shí)候我直接copy 了==的判斷,所以直接就改成了!=相&&得形式,可想而知結(jié)果肯定是錯(cuò)誤的。
            因?yàn)榕袛嗖坏扔诘臅r(shí)候,只要是一個(gè)不相等就不等,而如果用到了&&,那么即使有一個(gè)不等的話還是返回false,判定相等了,也就是
            !=和==沒有成為一個(gè)全集,兩者不是互逆的關(guān)系。。
            調(diào)試代碼的技巧很重要?。?!
            posted on 2009-09-27 14:15 deercoder 閱讀(429) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C/C++
            久久久WWW免费人成精品| 亚洲中文字幕久久精品无码APP| 国产精品女同久久久久电影院| 久久人爽人人爽人人片AV | 久久精品国产精品亚洲艾草网美妙| 久久996热精品xxxx| 久久久久久久精品成人热色戒 | 久久亚洲国产中v天仙www| 久久久91人妻无码精品蜜桃HD| 99久久精品免费看国产一区二区三区| 99久久久精品| 亚洲国产精品无码久久一线| 国产精品va久久久久久久| 亚洲中文字幕无码久久综合网| 国产精品VIDEOSSEX久久发布| 日韩人妻无码一区二区三区久久 | 国内精品免费久久影院| 久久一日本道色综合久久| 亚洲精品乱码久久久久久蜜桃| 久久精品国产影库免费看| 久久亚洲AV成人无码电影| 国内精品伊人久久久久妇| 91久久香蕉国产熟女线看| 亚洲av伊人久久综合密臀性色| 亚洲性久久久影院| 香港aa三级久久三级老师2021国产三级精品三级在 | 久久精品无码一区二区三区| 国产精品一区二区久久精品涩爱| 欧美激情精品久久久久| 久久精品国产亚洲沈樵| 精品久久久久久| 国产午夜免费高清久久影院| 亚洲AV无码久久精品蜜桃| 国内高清久久久久久| 精品国产乱码久久久久久呢| 久久人与动人物a级毛片| 伊人久久大香线蕉成人| 久久精品人人做人人爽电影| 国产亚洲精品久久久久秋霞| 久久人人爽人人爽人人片AV高清| 亚洲中文久久精品无码|