阿蓉之從零開始的 VC 結構體和類

2021-10-08 18:09:41 字數 3368 閱讀 4047

ε=(´ο`*)))唉,看不懂tmc13**,隨便在櫃子裡找了一本年代久遠的書,快速過一下前兩章,零散的記錄一些,書裡講的還是很循序漸進的,學到了一些之前不知道或已經忘了的,真好,乙個個字和**敲出來,敲字不易呀。

2、sdk(software development kit),軟體開發包

3、控制代碼handle,相當於資源的標識號。視窗控制代碼hwnd,若要對某個視窗進行操作,需要得到這個視窗的控制代碼。

4、c++是物件導向的語言。c++與c相比有很多優點,主要體現在封裝性(encapsulation),繼承性(inheritance)、和多型性(polymorphism)。

c語言中,結構體中的變數,可以是相同、部分相同,或完全不同的資料型別。c++對其進行了擴充套件,c++的結構體可以包含函式。

c++中預定義了三個標準輸入輸出流物件:cin(標準輸入),cout(標準輸出),cerr(標準錯誤輸出)。所以需要包含iostream.h這個標頭檔案。

結構體的定義:

#include struct point

;void main

void output()

~student()

};

函式的過載(overload):兩個函式函式名相同,但引數的型別和個數不同,c++編譯器會根據引數型別和個數來確定執行哪乙個函式。注意,只有函式的返回型別不同是不能構成函式的過載的。

如,void output();  int output(); 不能構成。void output(int a,int b=5);  void output(int a);  不能構成。

#include class point

point(int a,int b) //函式過載

void output()

point(int a,int b) //函式過載

void output()

point(int a,int b) //函式過載

void output()

};void main

//輸出結果10,10

類的繼承:對於動物類、綿羊類、魚類都具有吃、睡、呼吸,但不用乙個個的重寫**。可以基於animal類來建立fish類。animal被稱為基類(base class,或父類),fish為派生類(derived class,或子類

#include class animal

;如b是由c類和d類派生的,形式如下:

class b:public c,public d

;

#include class b1

;void b1::output()//b1的成員函式,:: 叫做作用域識別符號,指明乙個函式屬或乙個資料成員屬於哪個類

//全域性函式fn,指向animal類的指標作為fn()函式的引數

void main

//輸出結果為fish bubble

函式的覆蓋和隱藏:上面這個**就稱為函式的覆蓋(override),構成函式覆蓋的條件為:

隱藏的情況:(1)派生類的函式和基類函式完全一樣(2)派生類的函式和基類函式同名,但引數列表不同。(過載發生在同乙個類中)。隱藏發生時如果在派生類的同名函式中想要呼叫基類的的被隱藏函式可使用「基類名::函式名(引數)」,如base::fn()

**示例:

引用:引用就是乙個變數的別名

int a=5;

int &b=a;//用&表示申明乙個引用,引用必須在申明時進行初始化

int a=5;

int &b=a;

int c=3;

b=c; //此處是給b賦值,此時,b和a的值都變成了3

引用和指標變數的區別: 

c++標頭檔案重複包含的問題:如果出現類似以下的錯誤提示,則可以使用條件預處理指令。

\animal.h(2):error c2011:'animal':'class' type redefinition
條件預處理

/********************* animal.h*******************/

#ifndef animal_h_h

#define animal_h_h //用define定義乙個巨集

class animal

;#endif

/********************* fish.h*******************/

#include "animal.h"

#ifndef fish_h_h

#define fish_h_h

class fish

;#endif

/*******************main.cpp*******************/

#include "animal.h"

#include "fish.h"

//若無條件預處理指令,就會出現上述重定義的提示

//加上後,判斷animal_h_h是否定義,如果沒有就定義它,繼續執行。

//然後展開fish.h,而fish.h中包含了animal.h,再次展開animal.h,發現animal_h_h已經定義,於是跳轉到#endif

編譯(compiling)時,預處理器先對預處理指令進行處理,生成一種臨時檔案;之後編譯器受預處理的輸出,將源**換成包含機器語言指令的目標檔案.obj(debug目錄下),標頭檔案不參與編譯;之後是鏈結(linking),將.obj檔案和c++類庫檔案一起鏈結生成可執行檔案,exe。

從零開始寫C MVC框架之 專案結構

框架總分2個專案 web開發專案 幫助類專案 zycommon zy.utilities 1 zycommon,是web開發專案結構。新建乙個空解決方案,再建data service zyweb解決方案資料夾,把資料層 介面服務層 web層區分開 1.1 data解決方案下 zy.xn.model ...

從零開始一起學C語言(六) 結構體

目錄 一 結構體的引入 二 結構體的定義以及初始化 1 結構體的定義 2 結構體變數的初始化。三 結構體內元素的訪問 1 用結構體變數名 2 用結構體指標 四 結構體型別的大小 五 共用體 1 共用體的定義 2 共用體常用舉例 六 公用體的大小 七 列舉 現實生活中有很多變數需要描述,例如乙個人的資...

小白從零開始學習C之 程式的選擇結構

1.1選擇結構和條件判斷 c語言中,有兩種選擇語句,分別是 if語句和switch語句。1.2用if語句實現選擇結構 if語句的一般表示式為 if 表示式 語句1 else 語句2 if語句中的表示式可以是關係表示式 邏輯表示式 甚至是數值表示式。最直觀,最容易理解的是數值表示式。根據if語句的一般...