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

字號:

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