C 高階學習 物件導向

2021-10-04 03:57:33 字數 3160 閱讀 7368

類和物件

string類

在學習c++的過程中,有一套區別於c的記憶體分配,這個就是new和delete這兩個關鍵字

申請釋放記憶體

#include

using namespace std;

intmain()

分配多個記憶體
#include

using namespace std;

intmain()

; //分配記憶體的同時初始化

for(

int i =

0; i <3;

++i)

cout << endl;

delete[

] p3;

//釋放記憶體

return0;

}

注意:

動態分配記憶體

#include

using namespace std;

//陣列指標作為函式返回值 列為固定值的受限動態記憶體分配

int(

*create

(int row))[

3]intmain()

} cout << endl;

delete[

] p4;

return0;

}

什麼是物件:萬物皆物件,l擁有相同屬性和行為的一組物件

有了物件之後就會累(類),那什麼類:類是現實世界物件的抽象,物件是類虛擬世界的例項

簡單表示就是:類是一種使用者自定義的資料型別,包括表示屬性的成員變數和表示行為的成員函式

說到物件導向就不得不提物件導向的三大特性繼承,封裝和多型

類的關鍵字是:class

在對class描述之前需要了解到乙個規則:訪問控制許可權

既然有訪問控制許可權,那就有訪問型別限定符

訪問型別限定符

誰都可以訪問(使用/呼叫)

只有自己和子類可以訪問

只有自己(類內部)可以訪問

類和結構體區別

在c++中,類和結構沒有本質區別,唯一不同在於

類的預設訪問控制屬性為private

結構的預設訪問控制屬性為public

封裝對不同成員的控制訪問屬性加以區分,體現了c++作為物件導向語言的封裝特性

定義乙個類

接下來就是類的介紹了,今天是情人節,所以我們定義乙個女朋友類

class girlfrend

;

作為類,我們需要有屬性和行為,也就是成員變數和成員函式

我呢實在類內宣告,類外定義

void girlfrend:

:introduce()

void girlfrend:

:sleep()

void girlfrend:

:eat()

void girlfrend:

:setinformation

(char

* name,

int age,

int height,

char

* job)

然後呢在主函式裡面建立你的女朋友物件,並初始化你的女朋友

int

main()

執行結果:

你好!我叫女朋友我今年18歲,身高165

,我的職業是白衣天使

睡覺覺~

吃飯飯~

你好!我叫女朋友我今年18歲,身高160

,我的職業是白衣天使

睡覺覺~

吃飯飯~

在行為裡面有乙個函式用來設定物件,為什麼不直接賦值,而要定義這樣乙個函式來初始化物件。

因為class這個關鍵字的預設訪問控制屬性為private,意味著只有這個類自己和子類可以訪問m_name,m_age這些變數,這個就體現了c++作為物件導向語言的封裝特性,我有這個東西,可如果不是我和我兒子,誰都別想訪問,就是這麼霸道

c++在對字串的操作上提供了string類

在c裡面我們是如何使用字串的呢

//使用字元陣列

char str=

"hello"

;//使用字元指標

char

* s =

(char*)

"world"

;//直接使用字元常量

printf

("hello world\n"

);

在c++裡面是這樣使用字串的

標頭檔案

#include

//注意不是string.h

使用字串物件 string類建立物件
#include

#include

using namespace std;

//string在命名空間 std 裡面

intmain()

//拼接

s1 = s1 +

"456"

; s1.

("789");

s1.push_back

('!');

cout << s1 << endl;

//交換

s1.swap

(s2)

; cout << s1 <<

" "<< s2 << endl;

//字串長度

cout << s2.

size()

<< endl;

//查詢 替換

cout << s2.

find

("456",0

)<< endl;

s2.replace

(s2.

find

("456",0

),//第 n 個位置開始替換3,

//替換的字元數量

"888");

//替換的字串

cout << s2;

return0;

}

執行結果

s1 = s2

abc456789!

abc abc456789!103

abc888789!

C 物件導向(高階)

1.構造 委託 乙個建構函式可以呼叫另外的建構函式 class aa int i a i,0 a int i,int j 注 避免遞迴呼叫 例 class aa int i a i,0 a int i,int j a 2.不可變物件和類 immutable object and class 不可變物...

C 高階物件導向 上

事物的難度遠遠低於對事物的恐懼!這章開始我們開始正式進入c 物件導向的領域,這節我們不聊 就聊聊生活中的現象,我們知道,物件導向開發,就是為了貼切我們生活中的例子,也就是說直接把生活中的現象搬到程式 中。類和物件是物件導向中的兩個基本概念 類 指一類事物,是乙個抽象的概念 比方動物 電腦等,都可看成...

C 學習 物件導向

封裝 把客觀事物封裝成類,並將類內部的實現隱藏,以保證資料的完整性 比如年齡賦值為負數,就是個例子。當我們把類的字段定義為公共型別時,外部物件可以直接對類內部的資料進行操作,此時無法對這些操作進行一些邏輯判斷!物件導向程式設計中的封裝特性,是一種保護狀態資料完整性的方法。在物件導向程式設計中,應更多...