C 類物件共享資料的兩種實現方法

2021-07-25 14:49:50 字數 1244 閱讀 6943

c++中類對資料與行為做了封裝,使得私有資料成員不能在類體外被訪問,同時類物件之間也不能互相訪問對方的私有成員,而在有些情況下,資料既需要保持其私有性,又需要其有共享性,以下將給出兩種方式的實現。

一、靜態成員變數

#include

using namespace std;

class sample

sample(sample & s)

void show(void)

void input(void) };

char sample::m_sarray[20] = "i am a student";

int main(void)

執行結果如下:

default constructor!

i am a student

copy constructor!

i am a student

this is my job

this is my job

靜態成員變數m_sarray確實起到了在不同物件間共享的作用!不過由於其是靜態屬性,記憶體是在全域性/靜態區域開闢的,屬於棧記憶體區,記憶體大小使用受限。如果能動態從堆中申請記憶體,則可以使用大記憶體空間了。

二、指標成員變數與計數

如下所述的方法較為複雜,涉及到動態記憶體的分配,同時也要考慮到賦值、複製建構函式、析構函式的實現細節。

#include

using namespace std;

class sample

sample(int n)

sample(sample & s)

else

}~sample()

}sample & operator=(const sample & s)

m_parray = s.m_parray;

m_size = s.m_size;

m_scount++;

}void show(void) 

void input(void) 

cin.get(m_parray, m_size);}}

};int sample::m_scount=0;

int main()

執行結果如下:

default constructor!

copy constructor!

i am a student

i am a student

這種方法還不是很全面,因為沒有考慮到申請記憶體異常的情況。在實際使用中需要進行處理。

C 類物件共享資料的5種實現方法

c 中實現資料共享的5種方式 1.使用區域性變數和全域性變數共享資料 使用區域性變數能夠在呼叫和被呼叫函式之問通過引數傳遞實現不同函式塊之問的資料共享。區域性變數具有區域性作用域,能很好地實現函式之間的資料隱蔽。但在傳遞過程中需要很大的系統開銷,故一般只用於傳遞少量的資料。全域性變數具有檔案作用域。...

C 類物件共享資料的5種實現方法!

c 類物件共享資料的5種實現方法 c 中實現資料共享的5種方式 1.使用區域性變數和全域性變數共享資料 使用區域性變數能夠在呼叫和被呼叫函式之問通過引數傳遞實現不同函式塊之問的資料共享。區域性變數具有區域性作用域,能很好地實現函式之間的資料隱蔽。但在傳遞過程中需要很大的系統開銷,故一般只用於傳遞少量...

C 類的兩種例項化方法

直接上 include include include using namespace std class student student student int age,string name void student show int age,string name void student s...