C 類和物件概念及定義

2021-08-18 02:21:08 字數 1837 閱讀 8852

物件導向物件導向是一種程式設計范型,同時也是程式開發的一種方法。

物件是指類的例項,將物件作為程式的基本單元,將程式和資料封裝其中,以提高軟體的重用性、靈活性和擴充套件性。

需要明確的是:c語言是面向過程語言,而c++不是純粹的物件導向語言,而是基於物件導向的語言,因為c++包含c語言的部分。

物件導向的三大特性:封裝、繼承、多型

三種訪問限定符:public(公有)、protected(保護)、private(私有)

public成員可以從類外部直接訪問,private可以被派生類的函式呼叫,private和protected成員都不能從類外訪問

每個限定符在類體中可使用多次,作用域是從限定符出現開始到下一限定符之前或類體結束前

類體中如果沒有定義限定符,編譯器會預設為protected(結構體預設為public)

類的訪問限定符體現了物件導向的封裝性。

類的作用域分為區域性域、全域性域、類域、名字空間域四種

每個類都有自己的作用域,類的成員(成員函式、成員變數)都在類的作用域中,成員函式內可任意訪問成員變數和其他成員函式

物件可以通過,直接訪問公有成員,指向物件的指標通過->也可以直接訪問物件的公有成員

在類體外定義成員,需要使用::作用域解析符指明成員屬於哪個類域

class 類名 ;

例:

宣告物件的方法有三種:先宣告類型別,再定義物件;在宣告型別的同時定義物件;不出現類名,直接定義物件。

在類內定義成員函式

class student

};在類外定義成員函式

class

student

; void

student

::display

()

類內和類外定義有什麼區別呢?

類內定義:在函式呼叫的時候編譯器會當做內聯函式處理,在呼叫點將**展開

類外定義:函式呼叫時和普通函式一樣進行棧幀的開闢和回退。

具體的在後面內聯函式會詳細解釋。

類只是模型式的,限定了類的成員,定義出乙個類,但是並沒有分配出實際的記憶體空間來儲存它

乙個類可以例項化出多個物件,例項化出的物件占用實際的物理空間儲存類的成員變數

類就像建築設計圖,只有設計,例項化出的物件才是建築物,能實際儲存資料,占用物理空間。

所以每個物件的大小為類中

所有成員變數的大小之和,也遵循對齊原則。

結構體內存對齊規則:

第乙個成員在與結構體變數偏移量為0的位址處

其他成員變數要對齊到某個數字(對齊數)的整數倍的位址處

結構體總大小為最大對齊數(每個成員變數除了第乙個成員都有乙個對齊數)的整數倍

如果巢狀了結構體的情況,巢狀的結構體對齊到自己的最大對齊數的整數倍處,結構體的整體大小就是所有最大對齊數(含巢狀結構體的對齊數)的整數倍。

class和c語言中的struct看起來很相似,但其實不同:

struct node是乙個型別,在c語言中這樣定義struct node a;定義了乙個結構體型別的a變數;在c++中,結構體定義物件可以寫成node a

空的結構體在c語言中編譯通不過,會報錯;在c++中可以得到大小為1,在linux環境下大小為0;空的類(c++)大小也為1。

C (三)類和物件概念及定義

概念 是一種程式設計泛型,同時也是一種程式開發的方法。物件指的是類的例項,將物件作為程式的基本單元,將程式和資料封裝其中,以提高軟體的重用性,靈活性,和擴充套件性。c 不是純物件導向語言,而是基於物件導向語言,因為包含c語言 1 public成員可從類外部直接訪問,private protected...

類和物件(一) 類 物件概念及定義

c 是基於物件導向的語言,並不是純物件導向的語言,因為它包含c的部分,c是面向過程的語言 一 物件導向 概念 物件導向程式設計 oop 是一種程式設計的泛型,同時也是一種程式開發的方法,它將物件作為程式的基本單元,將程式和資料封裝其中,以提高軟體的重用性 靈活性和擴充套件性 二 類和物件的概念 類 ...

C 類和物件的概念

概念 object oriented programming,縮寫 oop 是一種程式開發的方法。物件指的是類的例項,將物件作為程式的基本單元,將程式和資料封裝其中,以提高軟體的重用性 靈活性和擴充套件性 在c語言中使用struct可以對資料進行抽象封裝,在c 中用class封裝程式和資料,其訪問許...