C 基礎知識

2021-08-15 13:30:00 字數 2158 閱讀 8435

1.物件導向基本概念:封裝,繼承,多型,過載(封裝是優點,繼承是基礎,過載是特點,而多型則是特徵)

封裝:把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏

繼承:指可以讓某個型別的物件獲得另乙個型別的物件的屬性的方法;實現方式有二類:實現繼承與介面繼承。實現繼承是指直接使用基類的屬性和方法而無需額外編碼的能力;介面繼承是指僅使用屬性和方法的名稱、但是子類必須提供實現的能力;

多型:乙個類例項的相同方法在不同情形有不同表現形式;要實現多型必須滿足三個條件:1.繼承;2.子類重寫父類的方法;3.父類引用變數指向子類物件。

注:繼承是子類使用父類方法,多型是父類使用子類方法。

2.c++編譯器會自動為類產生 建構函式 拷貝建構函式 析構函式 賦值函式。

3.建構函式和拷貝建構函式:

建構函式:建構函式的名字必須與類名相同,它不具有任何型別,不返回任何值

拷貝建構函式:在1.物件賦值;2.物件作為形參傳遞;3.函式返回值為物件的情況下會被呼叫;當建構函式有動態申請記憶體時,需 要重寫拷貝建構函式,且要進行深拷貝

4.初始化成員列表和建構函式

一下4中情況必須使用初始化成員列表:

a.初始化乙個引用成員變數;b.初始化乙個const變數;c.當我們在初始化乙個子類物件的時候,而這個子類物件的父類有乙個顯示的帶有引數的建構函式;d.類的成員是物件成員初始化,而該物件沒有無參建構函式

5.抽象類:不用來定義物件而只作為一種基本型別用作繼承的類

6.運算子過載:為了對使用者自定義資料型別的資料的操作與內定義的資料型別的資料的操作形式一致

,其中(*、::、?、sizeof、.)不能被過載

7.物件間通過靜態成員變數實現資料共享

8.const、static、指標:

const char *p

指向常量的指標

char *  const p

指向變數的常指標

int *p[n];—–指標陣列,每個元素均為指向整型資料的指標。

int (*)p[n];—p為指向一維陣列的指標,這個一維陣列有n個整型資料。

int *p();——函式帶回指標,指標指向返回的值。

int (*)p();—-p為指向函式的指標

9.new、delete、delete、free、malloc

new 和 delete是用來建立和刪除物件的,會呼叫類的構造和析構函式;malloc和free是用該申請和釋放堆記憶體的;delete是用來釋放一組物件的。

10.記憶體分配:

棧區:函式引數值、區域性變數值

堆區:new和malloc申請區

靜態資料區:全域性變數,常量

11.private、protect、public

private是私有型別,只有本類中的成員函式訪問;protect是保護型的,本類和繼承類可以訪問;public是公有型別,任何類都可以訪問

12.引用和指標區別

a.引用必須被初始化,指標不必

;b.引用初始化以後不能被改變,指標可以改變所指的物件

;c.不存在指向空值的引用,但是存在指向空值的指標

13.c++不是型別安全的,兩個不同型別的指標之間可以強制轉換

14.c++函式中值的傳遞方式

:值傳遞、指標傳遞、引用傳遞

15.sendmessage和postmessage有什麼區別

:sendmessage

是阻塞的,需要等訊息處理完;postmessage

是非阻塞的。

16.#include 編譯器先從標準庫路徑開始搜尋; #include 「filename.h」 編譯器先從使用者工作路徑開始搜尋

17.在win32下 char, int, float, double各佔多少位?

(1)   char       占用8位

(2)   int      占用32位

(3)   float    占用32位

(4)   double   占用64位

18.struct(結構) 和 union(聯合)的區別

結構和聯合都是由多個不同的資料型別成員組成, 但在任何同一時刻, 聯合中只存放了乙個被選中的成員(所有成員共用一塊位址空間), 而結構的所有成員都存在(不同成員的存放位址不同);

對於聯合的不同成員賦值, 將會對其它成員重寫,  原來成員的值就不存在了, 而對於結構的不同成員賦值是互不影響的

C 基礎知識

抽象類 abstract class 一種不可以被例項化的類。抽象類中一般含有抽象方法,當然也可有具體實現。繼承類只有實現過所有抽象類的抽象方法後才能被例項化。介面 inte ce 只含有共有抽象方法 public abstract method 的類。這些方法必須在子類中被實現。反射 程式集包含模...

c 基礎知識

或運算的意義是什麼 0 0 0 0 1 1 1 0 1 1 1 1 無進製與運算的意義是什麼 在vc中,視窗的每個屬性對應乙個只有一位為1的16位的二進位制數,當增加某屬性做或運算 即可,取消某個屬性只需與 上這個屬性的取反。cs.style ws maximizebox 和cs.style cs....

C 基礎知識

1 malloc和new區別與聯絡 a malloc malloc為函式,需要標頭檔案,申請的無型別,需要強制轉換 free釋放。示例 char p char malloc 10 sizeof char free p b new new是運算子,不需要標頭檔案,申請的是有型別的,自動呼叫建構函式 d...