C++語言學(xué)習(xí)之從結(jié)構(gòu)到類

字號(hào):

編程之前,有必要復(fù)習(xí)一下C++中面向?qū)ο蟮囊恍┗靖拍?。我們知道,C++與C相比有許多優(yōu)點(diǎn),主要體現(xiàn)在封裝性(Encapsulation)、繼承性(Inheritance)和多態(tài)性(Polymorphism)。封裝性把數(shù)據(jù)與操作數(shù)據(jù)的函數(shù)組織在一起,不僅使程序結(jié)構(gòu)更加緊湊,并且提高了類內(nèi)部數(shù)據(jù)的安全性;繼承性增加了軟件的可擴(kuò)充性及代碼重用性;多態(tài)性使設(shè)計(jì)人員在設(shè)計(jì)程序時(shí)可以對(duì)問題進(jìn)行更好的抽象,有利于代碼的維護(hù)和可重用。Visual C++不僅僅是一個(gè)編譯器,更是一個(gè)全面的應(yīng)用程序開發(fā)環(huán)境,讀者可以充分利用具有面向?qū)ο筇匦缘腃++語言開發(fā)出專業(yè)級(jí)的Windows應(yīng)用程序。熟練掌握本章的內(nèi)容,將為后續(xù)章節(jié)的學(xué)習(xí)打下良好的基礎(chǔ)。
    從結(jié)構(gòu)到類
    在C語言中,我們可以定義結(jié)構(gòu)體類型,將多個(gè)相關(guān)的變量包裝為一個(gè)整體使用。在結(jié)構(gòu)體中的變量,可以是相同、部分相同,或完全不同的數(shù)據(jù)類型。在C語言中,結(jié)構(gòu)體不能包含函數(shù)。在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對(duì)象具有狀態(tài)(屬性)和行為,狀態(tài)保存在成員變量中,行為通過成員方法(函數(shù))來實(shí)現(xiàn)。C語言中的結(jié)構(gòu)體只能描述一個(gè)對(duì)象的狀態(tài),不能描述一個(gè)對(duì)象的行為。在C++中,對(duì)結(jié)構(gòu)體進(jìn)行了擴(kuò)展,C++的結(jié)構(gòu)體可以包含函數(shù)。
    1、結(jié)構(gòu)體的定義
    下面我們看看如例1所示的程序(EX01.CPP)。
    例1
    #include
    struct point
    {
    int x;
    int y;
    };
    void main()
    {
    point pt;
    pt.x=0;
    pt.y=0;
    cout<<PT.X<<ENDL<<PT.Y<<ENDL;
    }
    在這段程序中,我們定義了一個(gè)結(jié)構(gòu)體point,在這個(gè)結(jié)構(gòu)體當(dāng)中,定義了兩個(gè)整型的變量,作為一個(gè)點(diǎn)的X坐標(biāo)和Y坐標(biāo)。在main函數(shù)中,定義了一個(gè)結(jié)構(gòu)體的變量pt,對(duì)pt的兩個(gè)成員變量進(jìn)行賦值,然后調(diào)用C++的輸出流類的對(duì)象cout將這個(gè)點(diǎn)的坐標(biāo)輸出。
    在C++中預(yù)定義了三個(gè)標(biāo)準(zhǔn)輸入輸出流對(duì)象:cin(標(biāo)準(zhǔn)輸入)、cout(標(biāo)準(zhǔn)輸出)和cerr(標(biāo)準(zhǔn)錯(cuò)誤輸出)。cin與輸入操作符(>>)一起用于從標(biāo)準(zhǔn)輸入讀入數(shù)據(jù),cout與輸出操作符(<<)一起用于輸出數(shù)據(jù)到標(biāo)準(zhǔn)輸出上,cerr與輸出操作符(<<)一起用于輸出錯(cuò)誤信息到標(biāo)準(zhǔn)錯(cuò)誤上(一般同標(biāo)準(zhǔn)輸出)。默認(rèn)的標(biāo)準(zhǔn)輸入通常為鍵盤,默認(rèn)的標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出通常為顯示器。
    cin和cout的使用比C語言中的scanf和printf要簡(jiǎn)單得多。使用cin和cout你不需要去考慮輸入和輸出的數(shù)據(jù)的類型,cin和cout可以自動(dòng)根據(jù)數(shù)據(jù)的類型調(diào)整輸入輸出的格式。