c c 常見知識點

2021-07-16 09:23:13 字數 2022 閱讀 9695

1.c中struct可不可以有函式,c++中類與struct區別?

c中結構體struct可以有函式指標,但不能有函式**,c++中struct和類區別不大,類預設成員變數與成員函式為private,並且預設繼承方式為private繼承,而struct成員變數預設為public,預設繼承方式為public繼承。

2.c++的特點。

這個問題為基礎問題,學過c++應該都知道其特點為繼承,封裝,多型,繼承實現了**復用,從巨集觀上來說,c++的核心思想為物件導向,一切皆為物件,繼承實現將事物的共性提取出來作為父類,特性則在子類中儲存,這就產生了繼承;封裝,利用類實現了物件的封裝,將其屬性和方法封裝到類中,同時根據其不同的屬性public,protect,private,來實現資料的保護;多型,就是利用父類指標指向不同子類物件,利用虛函式實現父類指標根據不同物件動態呼叫子類物件的方法。

3.類的建構函式和析構函式呼叫順序?

類的建構函式初始化順序,先呼叫父類建構函式再呼叫子類的建構函式,析構函式則相反,先構造的後析構,相當於棧的結構。

4.類中資料成員的初始化順序?

類中資料成員的初始化順序與建構函式中的位置先後順序無關,與資料在類中定義的先後順序有關。

5.建構函式可以是虛函式?虛析構函式的作用?

這個問題建議讀者好好品讀《effective c++》,建構函式不能為虛函式,原因是,如果建構函式為虛函式時則當子類物件呼叫父類建構函式時,由虛函式性質,此時會動態呼叫子類建構函式,而此時子類相關成員變數還未初始化,此時呼叫子類建構函式就會出現問題,因此建構函式不能為虛函式。虛析構函式是為了當用父類指標刪除乙個子類的物件時,子類的析構函式會被呼叫,從而達到刪除子類物件的目的,而不至於當析構函式並不為虛析構函式時,則會呼叫父類的析構函式,而並沒有析構子類物件,這並不是我們所希望的,因此一般當類中存在虛函式時,析構函式都定義為虛析構函式。

6.若func()為類a的乙個靜態成員函式,a *pa=null,pa->func(),能正確呼叫嗎?

類中任何成員函式都可以訪問靜態成員,但靜態成員函式只能通過物件名(或指向物件的指標)訪問該物件的非靜態成員,因為靜態成員函式沒有this指標,上式中,pa為指向類a的指標,只是它指向為空物件,因此仍能呼叫靜態成員函式。

7.動態繫結與靜態繫結的區別?

靜態繫結:程式編譯過程中,把函式(方法或過程)呼叫與響應呼叫所需的**結合的過程。

動態繫結:在執行期間根據呼叫物件實際型別決定呼叫的方法。多型屬於動態繫結。

8.四大型別轉換.

1.static_cast: 最常用的型別轉換,通常有2種方式 1.void指標轉換為任意型別的指標2.一般的標準轉換如int轉換為char型別

2.dynamic_cast  這個就是動態轉換,通常所說的多型呼叫虛函式使用時存在的情況。

3.reinterpret_cast 解釋轉換,強制將不相關的型別進行轉換,少使用這種轉換。

4.const_cast 常量指標被轉化成非常量指標,並且仍然指向原來的物件;常量引用被轉換成非常量引用,並且仍然指向原來的物件;常量物件被轉換成非常量物件。

9.使用指標時應注意什麼?

使用指標注意以下幾點:1.指標利用時需要初始化,防止出現指標指向記憶體位置不明確。2.指標賦值型別匹配 3.兩指標指向同一地方。4.再次分配記憶體時確保記憶體指向不為空。

10.指標陣列和陣列指標的區別。

指標陣列 int *p[10]   陣列名為p,其包含10個元素,並且10個元素都為指向int型的指標。

陣列指標 int (*p)[10]  p為指向陣列的指標,該陣列包含10個元素,後面10表明p+1則其向後移10個int資料位。

11.紅黑樹的性質。

紅黑樹的性質如下:1.每個結點要麼為紅要麼為黑。2.根節點都為黑3.每乙個葉節點為黑的 4.如果乙個節點為紅則其兩個子節點為黑 5.對每個節點,從該節點到其子孫節點的所有路徑上包含相同數目的黑節點。

12.雜湊表如何避免衝突?

首先說明雜湊函式(對映規則)的構造方法1.數字分析法 2.平方取中法 3.分段疊加法 4.除留餘數法 5 偽隨機數法。

13. 排序演算法總結。

今天就總結到這裡,只作為個人學習總結,如存在問題,還希望大家能夠指出!

C C 語言常見知識點

最近刷題,涉及到c中常見的知識點,慢慢記錄下。char str abcdefg str 3 m 這段 雖然編譯能通過,但是執行會出錯,而下面這段 就能執行通過 char str 10 abcdefg str 3 m 這是為什麼呢,因為指標指向常量字串,其位於常量儲存區,常量字串的內容是不可以被修改的...

C C 知識點記錄

atof 功能是把字串轉換成浮點數。char str 12345.67 d atof str cout 將會把str字串轉換為浮點數,並輸出 記錄遇到的各種小知識點,不斷補充 std cout 20 32 32 對於輸出結果為0,原來也遇到過,但突然有感覺很不可思議。仔細分析後找到了原因 20 32...

C C 知識點記錄

目錄 1 void function const 函式宣告後加const的作用 2 ifdef cplusplus 的作用 例 看一下下面的例子,直接在編譯前,就會提示下面的兩個錯誤 test1107.cpp 定義控制台應用程式的入口點。include stdafx.h include using ...