• <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>

            yutou's blog

            請不要做浮躁的人,請熱愛C++。
            posts - 14, comments - 1, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            visual studio 2005中的雙目運(yùn)算符重載

            Posted on 2008-01-12 17:37 yutou 閱讀(370) 評論(0)  編輯 收藏 引用 所屬分類: Programming
            書上的一些代碼在VS里不能通過編譯,比如重載雙目運(yùn)算符,假如把雙目運(yùn)算符重載函數(shù)定義為類的成員函數(shù),就無法通過編譯,一大把的error massage說不能訪問private成員什么的。然后把函數(shù)改成在類中聲明為友元函數(shù),編譯就能過。。
            把今天的習(xí)題貼上來,給以后留個參考,以免再出現(xiàn)這種問題又不知道該花我多少時間。

            main.cpp
             1//主函數(shù)文件
             2
             3//老譚說vc 6得把下面的" <iostream> "改成帶 .h后綴的iostream文件,VS這里不用改了,寫成下面的形式就行,而且好象已經(jīng)沒有了帶 .h后綴的iostream了,至少我試了一下說找不到文件和目錄
             4#include <iostream>
             5#include "10_2_stdafx.h"
             6//加conio使用getch函數(shù)報C4996錯誤的問題我還是沒有解決
             7#include "conio.h"
             8//假如要搞運(yùn)算符重載,using namespace std已經(jīng)不需要了,所以下面這行給注釋掉了
             9//using namespace std; 
            10
            11
            12int main()
            13{
            14    number c1(1,2) , c2(3,4) , c3;
            15    c3 = c2 - c1;
            16    c3.display();
            17
            18    c3 = c2 * c1;
            19    c3.display();
            20    
            21    c3 = c2 / c1;
            22    c3.display();
            23
            24    getch();
            25    return 0;
            26}

            10_2_stdafx.h
             1//頭文件
             2
             3#include <iostream>
             4//這里要加上下面這行
             5using namespace std;
             6
             7class number
             8{
             9public:
            10        //有不使用構(gòu)造函數(shù)初始化的對象加上下面這行
            11    number() { num=0 ; word=0; };
            12    number(int x , int y):num(x),word(y){} 
            13        //本來這里應(yīng)該寫好一點,一些可能的情況沒有寫進(jìn)去,我懶得寫了
            14    void display() { cout<<"the objet:"<<num<<"& &"<<word<<endl; };
            15        //下面是三個友元重載函數(shù)
            16    friend number operator - (number &t1 , number &t2 );
            17    friend number operator * (number &t1 , number &t2 );
            18    friend number operator / (number &t1 , number &t2 );
            19private:
            20    int num;
            21    int word;
            22}
            ;
            23

            func_def.cpp
             1//重載函數(shù)定義文件
             2
             3//這里的iostream和名字空間和main的一樣
             4#include <iostream>
             5#include "10_2_stdafx.h"
             6//using namespace std;
             7
             8//減法
             9number operator - (number &t1 , number &t2)
            10{
            11    return number( t1.num - t2.num , t1.word - t2.word);
            12}

            13
            14//乘法
            15number operator * (number &t1 , number &t2 )
            16{
            17    return number ( t1.num * t2.num , t1.word * t2.word );
            18}

            19
            20//除法
            21number operator / (number &t1 , number &t2 )
            22{
            23    return number ( t1.num / t2.num , t1.word / t2.word );
            24}

            25
            26//考慮到時間問題,輸出的一些處理細(xì)節(jié)沒有加上去。。。
            亚洲欧美伊人久久综合一区二区| 久久精品国产亚洲AV麻豆网站| 中文字幕无码久久久| 97久久精品国产精品青草| 亚洲精品午夜国产VA久久成人| 久久久无码一区二区三区| 国内精品伊人久久久久网站| 日批日出水久久亚洲精品tv| 狠狠色丁香婷婷综合久久来| 色婷婷久久综合中文久久一本| 久久亚洲美女精品国产精品| 久久国产精品国产自线拍免费| 亚洲国产视频久久| 免费一级欧美大片久久网| 一本色道久久88精品综合| 波多野结衣久久精品| 久久99精品久久久久久9蜜桃| 久久婷婷五月综合色奶水99啪| 国产激情久久久久久熟女老人| 久久久九九有精品国产| 国产精品成人99久久久久 | 午夜精品久久久久久久| 国产精品99久久久久久猫咪| 国产成人精品久久综合| 国产精品免费久久久久电影网| 亚洲精品无码久久久久AV麻豆| 深夜久久AAAAA级毛片免费看| 久久国产精品99久久久久久老狼| 国产成人无码久久久精品一| 久久这里只有精品久久| 久久久久无码精品| 久久精品中文字幕无码绿巨人| 精品久久久久国产免费 | 久久99久久99精品免视看动漫 | 97精品伊人久久大香线蕉| 久久天天躁狠狠躁夜夜av浪潮| 亚洲av成人无码久久精品| 国产精品99久久久久久董美香| 久久婷婷色综合一区二区| 亚洲综合久久综合激情久久| 久久久久亚洲av无码专区|