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