此型別的合法值是什麼?
此型別應該有什麼樣的函式和操作符
新型別的物件該如何被建立和銷毀
如何進行物件的初始化和賦值
物件作為函式引數如何以值傳遞
誰將使用此型別的物件成員
語法形式
class 類名稱
在類中宣告函式原型
可以在類外給出函式體實現,並在函式名前使用類名加以限定
也可以直接在類中給出函式體,形成內聯成員函式
允許宣告過載函式和帶預設引數值的函式
函式名與類名相同
不能定義返回值型別,也不能有return語句
可以有形式引數,也可以沒有形式引數
可以是內聯函式
可以過載
可以帶預設引數值
在物件被建立時使用特定的值構造物件,將物件初始化為乙個特定的初始狀態。
呼叫時可以不需要實參的建構函式。(參數列為空的建構函式;全部引數都有預設值得建構函式)
=default 如果程式中已定義建構函式,預設情況下編譯器不再隱含生成預設建構函式。如果此時依然希望編譯器隱含生成預設建構函式,可以使用=default
clock() =default; //指示編譯器提供預設建構函式
clock(int newh, int newm, int news); //建構函式
建構函式的實現
clock::clock(int newh, int newm, int news):hour(newh), minute(newm), second(news){}
委託建構函式使用類的其他建構函式執行初始化過程
例如:clock(int newh, int newm, int news): hour(newh),minute(newm), second(news)
clock(): clock(0, 0, 0)
複製建構函式是一種特殊的建構函式,其形參為本類的物件引用。作用是用乙個已存在的物件去初始化同型別的新物件。
class 類名
;類名::類(const 類名 &物件名)//複製建構函式的實現
point(const point& p) =delete; //指示編譯器不生成預設複製建構函式
point::point(const point &p)
=delete :指示編譯器不生成預設複製建構函式clock(const clock& p)=delete;
複製建構函式被呼叫的三種情況
定義 乙個物件時,以本類另乙個物件作為初始值,發生複製構造;
如果函式的形參是類的物件,呼叫函式時,將使用實參物件初始化形參物件,發生複製構造;
如果函式的返回值是類的物件,函式執行完後返回主調函式時,將使用return語句中的物件初始化乙個零時無名物件,傳遞給主調函式
~clock(); 不能有引數列表 clock::~clock(){}
struct 結構體名稱
union 聯合體名稱 共用儲存空間
特點成員共用同一組記憶體單元
任何兩個成員不會同時有效
enum class 列舉型別名:底層型別;
例:
enum class type ;
enum class type: char ;
enum class category ;
列舉類的優勢
強作用域,其作用域限制在列舉類中。
例:使用type的列舉值general: type::general
轉換限制,列舉類物件不可以與整型隱式地互相轉換。
可以指定底層型別
例:enum class type: char ;
#includeusing namespace std;
enum class side;
enum class thing; //不衝突
int main()
c 物件導向程式設計 類和物件(基礎)
目錄 類的資料成員和成員函式 在類體之外定義成員函式 內聯函式 物件的建立 類成員的訪問 建構函式和析構函式 複製建構函式 物件指標 this指標 靜態類成員 靜態資料成員的宣告,初始化與訪問 靜態成員函式 動態記憶體分配 class 類名 public 公有資料成員,公有成員函式 protecte...
C 類和物件 類和物件
c 中物件的型別稱為類,類代表了某一批物件的共性和特徵,類是物件的抽象,而物件是類的具體例項,類是抽象的,不占用記憶體,而物件是具體的,占用 儲存空間,這點很重要,讀者需要牢記。類是使用者自己指定的型別,如果程式中要用到類型別,必須自己根據需要進行宣告,或者使用別人已設計好的類,c 標準本身並不提供...
C 高階程式設計 熟悉類和物件
step1 從最小單元spreadsheetcell了解類和物件 1 編寫類定義和類方法 考慮實際電子 允許儲存的物件可以是數字,可以是文字資料。如果接收文字資料,電子 將轉換為數字。簡單的 程式設計實現如下 spreadsheetcell.h 類方法定義 spreadsheetcell.h ifn...