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

      考試首頁 | 考試用書 | 培訓(xùn)課程 | 模擬考場 | 考試論壇  
      全國  |             |          |          |          |          |         
        當前位置:計算機等級 > 二級考試 > C++語言程序設(shè)計 > C++輔導(dǎo) > 文章內(nèi)容
        

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

      中華IT學(xué)院   【 】  [ 2017年6月3日 ]

        一、私有數(shù)據(jù)成員的使用

        1.取值和賦值成員函數(shù)

        面向?qū)ο蟮募s定就是保證所有數(shù)據(jù)成員的私有性。一般我們都是通過公有成員函數(shù)來作為公共接口來讀取私有數(shù)據(jù)成員的。某些時候,我們稱這樣的函數(shù)為取值和賦值函數(shù)。

        取值函數(shù)的返回值和傳遞給賦值函數(shù)的參數(shù)不必一一匹配所有數(shù)據(jù)成員的類型。

        #include iostream.h

        class Date

        {

        int mo, da, yr;

        public:

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

        int getyear() const { return yr; }

        void setyear(int y) { yr = y; }

        };

        int main()

        {

        Date dt(4,1,89);

        cout< dt.setyear(97);

        cout< return 0;

        }

        上面的例子很簡單,不分析了。要養(yǎng)成這樣的習(xí)慣,通過成員函數(shù)來訪問和改變類中的數(shù)據(jù)。這樣有利于軟件的設(shè)計和維護。比如,改變Date類內(nèi)部數(shù)據(jù)的形式,但仍然用修改過的getyear()和setyear()來提供訪問接口,那么使用該類就不必修改他們的代碼,僅需要重新編譯程序即可。

        2.常量成員函數(shù)

        注意上面的程序中g(shù)etyear()被聲明為常量型,這樣可以保證該成員函數(shù)不會修改調(diào)用他的對象。通過加上const修飾符,可以使訪問對象數(shù)據(jù)的成員函數(shù)僅僅完成不會引起數(shù)據(jù)變動的那些操作。

        如果程序聲明某個Date對象為常量的話,那么該對象不得調(diào)用任何非常量型成員函數(shù),不論這些函數(shù)是否真的試圖修改對象的數(shù)據(jù)。只有把那些不會引起數(shù)據(jù)改變的函數(shù)都聲明為常量型,才可以讓常量對象來調(diào)用。

        3.改進的成員轉(zhuǎn)換函數(shù)

        下面的程序改進了從Date對象到CustomDate對象的成員轉(zhuǎn)換函數(shù),用取值和賦值函數(shù)取代了使用公有數(shù)據(jù)成員的做法。(以前的程序代碼在上一帖中)

        #include iostream.h

        class CustomDate

        {

        int da,yr;

        public:

        CustomDate() {}

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

        void display() const {cout< int getday() const { return da; }

        void setday(int d) { da=d; }

        };

        class Date

        {

        int mo,da,yr;

        public:

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

        operator CustomDate() const;

        };

        Date::operator CustomDate() const

        {

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

        CustomDate cd(0,yr);

        int day=da;

        for(int i=0;i cd.setday(day);

        return cd;

        }

        int main()

        {

        Date dt(11,17,89);

        CustomDate cd;

        cd=dt;

        cd.display();

        return 0;

        }

        注意上面的程序中Date::operator CustomDate()聲明為常量型,因為這個函數(shù)沒有改變調(diào)用它對象的數(shù)據(jù),盡管它修改了一個臨時CustomDate對象并將其作為函數(shù)返回值。

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