亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      考試首頁 | 考試用書 | 培訓課程 | 模擬考場 | 考試論壇  
      全國  |             |          |          |          |          |         
        當前位置:計算機等級 > 二級考試 > C++語言程序設計 > C++輔導 > 文章內容
        

      計算機等級考試二級C++語言程序設計輔導筆記:私有數(shù)據(jù)成員和友元

      中華IT學院   【 】  [ 2017年6月3日 ]

        5.友元函數(shù)

        通常,除非真的需要,否則并不需要把整個類都設為另一個類的友元,只需挑出需要訪問當前類私有數(shù)據(jù)成員的成員函數(shù),將它們設置為該類的友元即可。這樣的函數(shù)稱為友元函數(shù)。

        下面的程序限制了CustomDate類數(shù)據(jù)成員的訪問,Date類中只有需要這些數(shù)據(jù)的成員函數(shù)才有權讀寫它們。

        #include iostream.h

        class CustomDate;

        class Date

        {

        int mo,da,yr;

        public:

        Date(const CustomDate&);

        void display() const {cout< };

        class CustomDate

        {

        int da,yr;

        public:

        CustomDate(int d=0,int y=0) { da=d; yr=y; }

        friend Date::Date(const CustomDate&);

        };

        Date::Date(const CustomDate& cd)

        {

        static int dys[] = {31,28,31,30,31,30,31,31,30,31,30,31};

        yr=cd.yr;

        da=cd.da;

        for(mo=0;mo<11;mo++)

        if(da>dys[mo]) da-=dys[mo];

        else break;

        mo++;

        }

        int main()

        {

        Date dt(CustomDate(123, 89));

        dt.display();

        return 0;

        }

        6.匿名對象

        上面main()函數(shù)中Date對象調用CustomDate類的構造函數(shù)創(chuàng)建了一個匿名CustomDate對象,然后用該對象創(chuàng)建了一個Date對象。這種用法在C++中是經(jīng)常出現(xiàn)的。

        7.非類成員的友元函數(shù)

        有時候友元函數(shù)未必是某個類的成員。這樣的函數(shù)擁有類對象私有數(shù)據(jù)成員的讀寫權,但它并不是任何類的成員函數(shù)。這個特性在重載運算符時特別有用。

        非類成員的友元函數(shù)通常被用來做為類之間的紐帶。一個函數(shù)如果被兩個類同時聲明為友元,它就可以訪問這兩個類的私有成員。下面的程序說明了一個可以訪問兩個類私有數(shù)據(jù)成員的友元函數(shù)是如何將在兩個類之間架起橋梁的。

        #include iostream.h

        class Time;

        class Date

        {

        int mo,da,yr;

        public:

        Date(int m,int d,int y) { mo=m; da=d; yr=y;}

        friend void display(const Date&, const Time&);

        };

        class Time

        {

        int hr,min,sec;

        public:

        Time(int h,int m,int s) { hr=h; min=m; sec=s;}

        friend void display(const Date&, const Time&);

        };

        void display(const Date& dt, const Time& tm)

        {

        cout << dt.mo << '/' << dt.da << '/' << dt.yr;

        cout << ' ';

        cout << tm.hr << ':' << tm.min << ':' << tm.sec;

        }

        int main()

        {

        Date dt(2,16,97);

        Time tm(10,55,0);

        display(dt, tm);

        return 0;

        }

      首頁 1 2 3 尾頁
      分享到:
      本文糾錯】【告訴好友】【打印此文】【返回頂部
      將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動訪問考試網(wǎng) | 復制本頁地址,傳給QQ/MSN上的好友 | 申請鏈接 | 意見留言 TOP
      關于本站  網(wǎng)站聲明  廣告服務  聯(lián)系方式  站內導航  考試論壇
      Copyright © 2007-2013 中華考試網(wǎng)(Examw.com) All Rights Reserved