程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> GeekBand第一周學習筆記,geekband學習筆記

GeekBand第一周學習筆記,geekband學習筆記

編輯:C++入門知識

GeekBand第一周學習筆記,geekband學習筆記


Class member Modifiers(類成員修飾詞)

  public(公有):可被任何函數及類訪問

  private(私有):無法被非友元的外部函數及類訪問;

  protected(保護):只能夠被自身及子類訪問;

  friend(友元):修飾非操作類成員,可將外部函數或類指定為操作類的友元函數(類),友元函數(類)中可直接訪問操作類中的private成員.

(PS:class的objects<實例>互為friends<友元>)


 Class with pointer member(s)

   class按有無成員指針可分為Class with pointer member(s)與Class without pointer member(s)兩種,前者成員指針如在使用過程中新分配了內存並在類生命周期結束後沒有pointer指向這個內存遍需要在類的析構函數中釋放這個內存,否則這片內存在程序結束前便會一直被占用,造成內存洩露.

(PS:pointer是數據占用內存的頭地址,其大小與系統的索址范圍相關32位系統中pointer占32bit即4Byte,64位則為8Byte)


Header file(頭文件)防衛式聲明

Heard file中需要進行防衛式聲明宏定義,否則將可能導致頭文件重復被包含,絕大多數編譯器支持

#ifndef NAME
#define NAME
......
#endif

 部分新版本編譯器則支持 #pragma once 的寫法.


 inline function(內聯函數)

  函數內聯能夠增加程序運行速度但會降低編譯速度並增加目標程序總代碼量適合用於頻繁調用且代碼短小的函數.

  類結構體內聲明並定義的函數將優先內聯,class結構體外定義的函數則需要在聲明前加上inline關鍵字,函數最終是否內聯取決與函數實際代碼量與編譯器的判斷.

( PS:函數內聯實際為編譯器將函數調用跳轉替換為函數實際作用代碼,與宏定義是兩碼事)


 ctor(構造函數)與dtor(析構函數)

  ctordtor在類生命周期開始與結束時會各被調用且只會被調用一次,默認無代碼的ctordtor分別執行類成員的內存分配與釋放,ctor可以傳入參數並重載,dtor則不行.

ctor通常指定為public,當無public的ctor時外部將無法顯示的新建實例,可通過類中public的函數得到並限制實例的創建.

(PS:dtor通常用於釋放成員指針指向內存)


pass by reference & return by reference

  傳遞與返回參數的&(引用)通常能夠增加傳遞速度,相比傳遞任何實例時都只會傳遞實例的首地址並自動解引用.

(PS:當參數為指針類型時不能使用&)


operator overloading(操作符重載)

  操作符重載聲明的方法有兩種

    A:重載的操作符在類體中被聲明,聲明方式如同普通成員函數一樣,只不過他的名字包含關鍵字operator,以及緊跟其後的一個c++預定義的操作符. class perason{  bool operator > (type right);...  } 

    B:操作符重載實現為非類成員函數(全局函數)對於全局重載操作符,代表左操作數的參數必須被顯式指定. bool operator > (type left,type right); 

(PS:C++要求賦值=,下標[],調用(), 和成員指向-> 操作符必須被定義為類成員操作符.任何把這些操作符定義為名字空間成員的定義都會被標記為編譯時刻錯誤.)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved