要對C++語言學習時,一定要了解什麼是C++語言以及C++的構成,C++設計成盡可能與C兼容,C++中提供一個從C到C++的平滑過渡,C++避免平台限定或沒有普遍用途的特性。
在面向對象的程序設計中,對象具有狀態(屬性)和行為,狀態保存在成員變量中,行為通過成員方法(函數)來實現。C語言中的結構體只能描述一個對象的狀態,不能描述一個對象的行為。在C++語言學習中,對結構體進行了擴展,C++的結構體可以包含函數。
1、結構體的定義
下面我們看看如例1所示的程序(EX01.C )。
- #include
- struct point
- {
- int x;
- int y;
- };
- void main()
- {
- point pt;
- pt.x=0;
- pt.y=0;
- cout<<PT.X<<ENDL<<PT.Y<<ENDL;
- }
在這段程序中,我們定義了一個C語言結構體point,在這個結構體當中,定義了兩個整型的變量,作為一個點的X坐標和Y坐標。在main函數中,定義了一個結構體的變量pt,對pt的兩個成員變量進行賦值,然後調用C++的輸出流類的對象cout將這個點的坐標輸出。
在C++中預定義了三個標准輸入輸出流對象:cin(標准輸入)、cout(標准輸出)和cerr(標准錯誤輸出)。cin與輸入操作符(> gt;)一起用於從標准輸入讀入數據。cout與輸出操作符(< lt;)一起用於輸出數據到標准輸出上,cerr與輸出操作符(< lt;)一起用於輸出錯誤信息到標准錯誤上(一般同標准輸出)。默認的標准輸入通常為鍵盤,默認的標准輸出和標准錯誤輸出通常為顯示器。
cin和cout的使用比C語言中的scanf和printf要簡單得多。使用cin和cout你不需要去考慮輸入和輸出的數據的類型,cin和cout可以自動根據數據的類型調整輸入輸出的格式。對於輸出來說,按照例1中所示的方式調用就可以了,對於輸入來說,我們以如下方式調用即可:
注意:在使用cin和cout對象時,要注意箭頭的方向。在輸出中我們還使用了endl(end of line),表示換行,注意最後一個是字母‘l’,而不是數字1。endl相當於C語言的'/n',endl在輸出流中插入一個換行,並刷新輸出緩沖區。
因為用到了C++語言學習的標准輸入輸出流,所以我們需要包含iostream.h這個頭文件,就像我們在C語言中用到了printf和scanf函數時,要包含C的標准輸入輸出頭文件stdio.h。提示:在定義結構體時,一定C語言不要忘了在右花括號處加上一個分號(;)。我們將結構體point的定義修改一下,結果如例2所示:
- struct point
- {
- int x;
- int y;
- void output()
- {
- cout<<X<<ENDL<<Y<<ENDL;
- }
- };
- 在point這個結構體中加入了一個函數output。我們知道在C語言中,結構體中是不能有函數的,然而在C++中,結構體中是可以有函數的,稱為成員函數。這樣,在main函數中就可以以如下方式調用:
- cout<<X<<ENDL<<Y<<ENDL;
- }
- };
這就是C++語言學習中的類的定義,看起來是不是和結構體的定義很類似?在C++語言學習中,結構體是用關鍵字struct聲明的類。類和結構體的定義除了使用關鍵字“cla ”和“struct”不同之外,更重要的是在成員的訪問控制方面有所差異。