欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
C/C++拾遺(四):基于對象的編程風(fēng)格【筆記】
     C++的面向對象內容還是很多的,內容繁雜,體系龐大,想起家里的Prime的厚度,心里一小顫。二級考試教材只涉及了C++最基礎的語(yǔ)法,比如類(lèi)之間的繼承關(guān)系,虛函數等,至于泛型編程基本沒(méi)有涉及?,F在自己感覺(jué)不熟的就是C++的三個(gè)部分:泛型編程、面向對象設計和運算符重載。今天重新看了下這部分,把感覺(jué)重要的來(lái)寫(xiě)一寫(xiě)。
1. 構造函數中的初始化有兩種方式,一種是針對參數的直接設置默認值,如(constructor(int num = 1, int sum = 0)),另一種則是在函數原型之后附加上初始化列表,針對參數、成員數據進(jìn)行初始化,值得一提的是,對于const/static成員、沒(méi)有默認構造函數的類(lèi)對象成員都需要使用第二種方式進(jìn)行初始化。
2. Mutalbe和Const。有些時(shí)候我們希望變量在程序運行過(guò)程中保持不變,會(huì )為其設置const屬性;但是此時(shí)如果傳入參數的過(guò)程修改參數的數據就會(huì )引發(fā)錯誤,因此我們可以將函數過(guò)程也聲明為const(常函數),如(int length() const {return _length;}),編譯器就會(huì )檢查常函數是否修改了類(lèi)對象的數值。但是還有些時(shí)候我們認為類(lèi)對象中的某些屬性與對象核心屬性無(wú)關(guān),可以改變,就將其聲明為mutable類(lèi)型,則const函數也可以改變其值。應該說(shuō)C++的const/mutalbe提供了非常大的靈活性。更詳細和深入的內容留待以后實(shí)際用到時(shí)才補充。
3. Static成員。對于類(lèi)中的static成員屬于類(lèi)中所有對象所共有的,因此每個(gè)類(lèi)中只有一份,沒(méi)有副本。靜態(tài)成員函數的主要目的是使得與類(lèi)成員數據無(wú)關(guān)的操作函數可以獨立于類(lèi)對象而直接調用,如class::function而非object.function。
     最后,學(xué)習編程不敲代碼果然不行,哪怕比著(zhù)書(shū)上的例子敲呢!這里附上一個(gè)關(guān)于棧的類(lèi),可以看到關(guān)于類(lèi)的基本的語(yǔ)法點(diǎn)。

點(diǎn)擊(此處)折疊或打開(kāi)

  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <vector>
  4. #include <string>

  5. using namespace std;

  6. //Class Stack Define

  7. class Stack
  8. {
  9.       //類(lèi)中聲明成員函數,可以給出簡(jiǎn)單函數的定義,默認作為inline使用,如這里的size()
  10.       public:
  11.              bool push( string &);
  12.              bool pop(string &elem);
  13.              bool peek(string &elem);
  14.              bool empty();
  15.              bool full();
  16.              
  17.              int size() {return _stack.size();}
  18.       private:
  19.               vector<string> _stack;
  20.       };
  21. //Initial Stack
  22. //EOF is ctrl + D
  23. //本例充分使用了vector的泛型算法
  24. void fill_stack(Stack &stack, istream &is = cin)
  25. {
  26.      string str;
  27.      while (is >> str && !stack.full())
  28.            stack.push(str);
  29.      cout << "Read in "<< stack.size()<< " elements\n";
  30.  }
  31.  
  32. bool Stack::push(string &elem)
  33. {
  34.      if (full())
  35.         return false;
  36.      _stack.push_back(elem);
  37.      return true;
  38. }

  39. inline bool
  40. Stack::empty()
  41. {
  42.      return _stack.empty();
  43.               }

  44. bool
  45. Stack::pop(string &elem)
  46. {
  47.      if (empty())
  48.         return false;
  49.      elem = _stack.back();
  50.      _stack.pop_back();
  51.      return true;
  52. }

  53. inline bool
  54. Stack::full()
  55. {
  56.      return _stack.size() == _stack.max_size();
  57. }

  58. //peek() is used to check the last elem in Stack
  59. bool Stack::peek(string &elem)
  60. {
  61.      if (empty())
  62.         return false;
  63.      elem = _stack.back();
  64.      return true;
  65. }



  66. int main(int argc, char *argv[])
  67. {
  68.     cout <<"A Stack Test...\n";
  69.     
  70.     string elem;
  71.     string &r_elem = elem;
  72.     
  73.     Stack stack;
  74.     fill_stack(stack);
  75.     stack.peek(r_elem);
  76.     cout << "the last elem is : "<< r_elem<<endl;
  77.     
  78.     system("PAUSE");
  79.     return EXIT_SUCCESS;
  80. }


本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Visual C++期末考試輔導
Qt中利用QTime類(lèi)來(lái)控制時(shí)間,這里簡(jiǎn)單介紹一下QTime的成員函數的用法:
C++:多線(xiàn)程類(lèi)庫的設計與實(shí)現(五)
如何有效地進(jìn)行運算符重載
操作符重載
stl排序之sort函數
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久