l 函數重載(函數多態)
可以有多個同名函數,只要他們的參數不同即可。
int store (int ,int);
int store (long ,long);
int store (long);
調用該函數時,指定的參數決定了調用哪一個版本
l 緩沖區存儲; 定義一個數組 yum[100]來存儲字符串。
(如char yum [ ] = “Zombie liion”)
std::cin >> yum;
但是如何保證用戶的輸入不會溢出?而且如果用戶輸入了空格,cin 會認為字符串就此結束,
不再會將接下來的內容寫入緩沖區。
為了解決這個問題,必須調用cin 對象的方法getline并
提供兩個參數 1、要填充的緩沖區 2、最多讀取的字符數。
std::cin .getline(yum,18)
這樣可以讀取18個字符,包括空字符(空格)
在遇到回車后 停止讀取。
還可以: std::cin .getline ( yum,18,‘ ’);
這條語句在遇到空格后即停止讀取輸入。
ex: char name[100];
std::cin .getline(name,18);
l 類和成員
1) 類的聲明(class)比如聲明一個Tricycle類:
class Tricycle { //三輪車public: unsigned int speed; pedal(); //踏板 brake(); //剎車 };一個成員變量speed 兩個成員函數,這三個成員可以被其他類 直接引用。
//聲明了類后,系統并不會為這個Tricycle分配內存,
他只是告訴編譯器,這個類是什么,包括什么
聲明了類后,可以用這個類來創建對象。
ex:Tricycle Yong_Jiu; //永久牌三輪車 同 int n;
創建對象后,可使用“ . ”來訪問其成員變量/成員函數
ex : Yong_Jiu .speed = 6
注意:這里 Tricycle .speed = 6 是不允許的。
調用pedal()函數: Yong_Jiu .pedal();
class Tricycle { int model = 110;public: int.... pedal....}model并不在public 之列,所以他是私有的(PRivate)
雖然成員變量可以是共有的,但最好將他們都聲明為私有的(private)這樣只能通過成員函數訪問他們,
用于設置或獲取私有成員變量值的函數稱為 存取器(accessor),其他 類 要使用這些變量,必須調用存取器.
要想訪問私有函數,要在類中設置一個共有的接口函數,類的對象需要通過這個接口函數才能訪問私有成員。
#include<iostream>using namespace std;class human {public: void set(int w) { weight = w; } int print ( ) { return weight ; }private: int weight;}; int main ( ) { human Tom; Tom.set(5); cout<<"Tom的體重為:"<<Tom.print()<<"/n"; human Mike; Mike.set(7); cout<<"Mike的體重為:"<<Mike.print()<<"/n"; return 0;}輸出結果如下: Tom的體重為:5
Mike的體重為:7
看似這么復雜的設置了一個接口是為了提高安全性,比如用戶輸入了一個超過范圍的數,
這個就可以在接口函數set中進行設定:
void set(int w) { if(w>0 && w<100) weight = w; else cout<<“請將weight的值設置為從0~100,否則系統將會把weight設置為0” weight = 0;}一般情況下,我們將類的數據成員設置為私有,而使用類的公有函數來訪問它,
好處就是數據的賦值和讀取分開操作,賦值函數不需要考慮讀取函數是如何工作的,
反之亦然,如此便提高了程序的可維護性。
新聞熱點
疑難解答