C 筆記( 封裝(下))

2021-10-01 05:37:16 字數 2860 閱讀 6580

c++物件陣列和物件成員

物件陣列

例子:

class

coordinate

;int

main

(void

)

物件成員

初始化時先初始化成員物件,再初始化總物件,銷毀時先銷毀總物件再銷毀其中成員物件。

//使用物件成員的例子

#include

#include

#include

"line.h"

using

namespace std;

intmain

(void

)#include

"line.h"

void line::

seta

(int x,

int y)

void

setb

(int x,

int y)

void line::

printinfo()

#include

"coordinate.h"

class

line

~line()

void

seta

(int x,

int y)

;void

setb

(int x,

int y)

;void

printinfo()

;private

: coordinate m_coora;

coordinate m_coorb;};

#include

"coordinate.h"

void coordinate::

setx

(int x)

int coordinate::

getx()

void coordinate::

sety

(int y)

int coordinate::

gety()

class

coordinate

~coordinate()

void

setx

(int x)

;int

getx()

;void

sety

(int y)

;int

gety()

;private

:int m_ix;

int m_iy;

};

c++深拷貝與淺拷貝

如何實現拷貝建構函式並不簡單,物件間的拷貝大致為為兩種情況,深拷貝和淺拷貝。

深拷貝當進行物件拷貝時,不是簡單的做值的拷貝,而是將堆中記憶體的資料也進行拷貝,這種拷貝模式就叫做深拷貝。

淺拷貝只是將資料成員的值進行了簡單的拷貝。

如果遇到指標的時候,僅拷貝了位址,因此兩個指標指向了同乙個記憶體位址,我們希望的並不是這樣,我們所期望的是,指向另乙個位址空間,但是將原指標指向的位址當中的內容複製了過來。因此需要考慮使用深拷貝。

c++物件指標

c++中的new會自動的呼叫相關物件的建構函式,而在c語言中使用malloc只會分配相關記憶體並不會自動呼叫物件的建構函式。

//簡單例子

//已經定義了乙個coordinate類

coordinate *p1 =

null

;p1 =

newcoordinate()

;coordinate *p2 =

newcoordinate()

;p1-

>m_ix=10;

p1->m_iy=20;

//不同的方法,意義一樣

(*p2)

.m_ix=30;

(*p2)

.m_iy=40;

delete p1;

p1 =

null

;delete p2;

p2 =

null

;

物件成員指標

物件的指標作為另外乙個類的物件成員。

指標型別佔4個基本記憶體單元

//前提已經申明好coordinate類

#include

"coordinate.h"

class

line

;

this指標

array arr1

this 等價於&arr1

class

array

intgetlen()

void

setlen

(int len)

private

:int len;

};

const關鍵字(在c++筆記ⅰ出現過基礎部分)

常物件成員和常成員函式

class

coordinate

;

//常物件成員

class

line

;

//常物件

const line line(1

,2,3

,4);

//常物件會呼叫常成員函式

物件的常指標和常引用
coordinate coor1(3

,5);

//物件的常引用

const coordinate &coor2 =coor1;

//物件的常指標

const coordinate *pcoor =

&coor1;

學習筆記 C 封裝(下)

初始化乙個有n個物件的物件陣列時呼叫n次建構函式 相應的,銷毀時呼叫n次析構函式 例項化乙個物件時,如果這個物件包含物件成員,則先例項化物件成員,在例項化這個物件 物件成員實踐 當資料成員中含有指標時,淺拷貝會使兩個物件的成員指標指向相同的記憶體位址 深拷貝不是簡單的值拷貝,而是將指標成員指向的記憶...

陣列常用例項封裝 下

1.陣列 字串 乙個元素出現的次數function getelecount obj,ele return num 2.獲取物件陣列某些項function getelecount arr,keys var keys keys.split newarrone 是否只是需要獲取某一項的值 if keys....

iOS 遊戲渠道SDK 抽象工程封裝 下

這樣做的好處,不止在於可以清晰地劃分 之間的界限,更重要的是,這樣更加便於管理和維護。試想一下,我們做抽象工程的目的是什麼?是為了遊戲可以不用頻繁重複地接入渠道sdk嘛。那麼怎麼才能達到這個目的呢?我們將 劃分成兩個部分 thirdlib用來存放渠道sdk的依賴庫檔案。為什麼我們要把目錄的職責分得這...