一、c++和c預言的區別
c語言:
1、c語言是面向過程的,關注的是過程,分析出求解問題的步驟,通過函式呼叫逐步解決問題;
2、c++是物件導向的,關注的是物件,將一件事情拆分成不同的物件,靠物件之間的互動完成.
3、在c語言中,結構體只能定義變數;在c++中,結構體內不僅可以定義變數,也可以定義函式。
二、類的定義
1、宣告和定義全放在類體中;需要注意的是:成員函式如果放在類中,編譯器可能會將其當成內聯函式處理。
2、宣告放在.**件中,定義放在.cpp檔案中。
三、類的訪問限定符及其封裝
1、訪問限定符
注:1、訪問許可權作用域從該訪問限定符出現的位置開始到下乙個訪問限定符出現時為止;
2、class的預設訪問許可權為private,struct為public(因為struct要相容c)
3、訪問限定符只在編譯時有用,當資料對映到記憶體時,沒有任何訪問限定符上的區別。
2、封裝
定義:將資料和運算元據的方法進行有機結合,隱藏物件的屬性和實現細節,僅對對外公開介面和物件進行互動。
物件導向的三大特性:封裝、繼承、多型。
四、類的作用域
在類體外定義成員,需要使用::作用域解析符指明成員屬於哪個類域。
class person
;void person::printpersoninfo()
;#pragma packet;
注:對齊數不能隨意指定,只能是內建型別已有的位元組數,例如:char(1),int(4).....不能是6,9等的任意數。
3、 如何知道結構體中某個成員相對於結構體起始位置的偏移量
#define offsetof(s,m) (size_t)(&(s*)0)->m)
4、 什麼是大小端?如何測試某台機器是大端還是小端,有沒有遇到過要考慮大小端的場景
七、this指標
特性:1、每個類的成員函式都有乙個隱藏的this指標,讓該指標指向函式執行時呼叫該函式的物件;
2、this指標的型別:類型別*const;
3、this指標本質上是乙個成員函式的形參,是物件呼叫成員時,將物件位址作為實參傳給this形參,所以物件中不儲存this指標。
面試題
1、this指標存在**?
存在於暫存器中
2.、this指標可以為空嗎?
當我們在呼叫函式時,不需要利用this指向當前物件時,this指標可以為空;
當我們呼叫的函式需要this指向當前物件,並進行操作,就不可以為空。
例如下面**:
class a
;p->print():編譯通過,執行不通過;
p是乙個空指標,呼叫了print函式,並利用this指標訪問了_a,而this指標此時是空的,程式崩潰。
p->show():編譯通過,執行通過;
p是乙個空指標,呼叫了show函式,但只是輸出了字串,並沒有訪問成員變數。
類和物件(上)
類的定義格式 說明部分和實現部分 class 類名 public 公有資料成員和成員函式 protected 保護資料成員和成員函式 private 私有資料成員和成員函式 各個成員函式的實現 建構函式 a 作用 為物件分配空間 對物件初始化 即賦初始值 請求其他資源。b 特點 函式名和類名完全相同...
類和物件(上)
1.什麼是物件導向?想想之前學過的c語言,c語言是面向過程的語言,不管是簡單型別還是複雜型別,只是一味的呼叫函式,這裡的呼叫函式就是將資料處理的過程,更加在乎的是處理邏輯和處理結果 c 是面向過程的語言,首先要說一下什麼是類?什麼是物件?類,通俗的就講就是乙個事物的描述,描述著這一類事物的特徵和動作...
類和物件(上)
1.類是物件的抽象,而物件是類的具體例項。類是抽象的,不占用記憶體 而物件是具體的,占用儲存空間。2.面向過程與物件導向 c語言是面向過程的,關注的是過程中的資料與方法。c 是物件導向的,關注的是物件 的屬性與功能。1.在c 中,結構體內不僅可以定義變數,也可以定義函式。struct student...