資料共享 指向自身型別的指標 智慧型指標

2021-06-19 13:13:55 字數 1860 閱讀 3769

實際專案遇到如下要求:

1、某幾個類(a,b,c,....) 可以共享某個資料類; 2、

a,b,c,....這些類只使用資料類中感興趣的資料成員;

3、只要資料類的資料更新, a,b,c,...類中相應的資料也可更新;

思考: 

1.繼承、組合、指標都有資料分享的功能,但結合上述要求,選擇指標實現;

2.指標:讓多個指標指向資料類,實現資料的實時共享;

存在問題:多個指標指向乙個類(目標),存在指標管理問題

涉及的c++知識:

1.指向自身型別的指標;

2.「智慧型指標

」思想,計數,增、減,零刪除;

3.類靜態成員和靜態函式

程式**:

#ifndef _org_h

#define _org_h

#include#includeusing namespace std;

class org

;#endif

#include "org.h"

org::org():std_name("***"),std_number(1),std_grades(0.1)

org::~org()

unsigned int org::instancerefnum = 0; //計數初始化

org* org::instance = null; //自指標初始化

org* org::getdef()

return instance; //返回自指標

}void org::deldefault(void)

;#endif

#include "a.h"

a::a():std_name("***"),std_number(1),std_grades(0.1)

a::~a()

string a::get_name()

int a::get_number()

double a::get_grades()

#ifndef _b_h

#define _b_h

#include#include#include "org.h"

using namespace std;

class b

;#endif

#include "b.h"

b::b():std_name("***"),std_number(1),std_grades(0.1)

b::~b()

string b::get_name()

int b::get_number()

double b::get_grades()

//測試主程式

#include #include #include "org.h"

#include "a.h"

#include "b.h"

using namespace std;

int main()

{ //原始資料

org a;

cout <

p->set_number(1001);

p->set_grades(97.0);

a sta;

cout <

p->set_number(1002);

p->set_grades(67.0);

cout <

結果:

指標的型別 指標所指向 指向指標的引用

從語法的角度看,你只要把指標宣告語句裡的指標名字去掉,剩下的部 分就是這個指標的型別。這是指標本身所具有的型別。讓我們看看例一中各 個指標的型別 int ptr 指標的型別是int char ptr 指標的型別是char int ptr 指標的型別是int int ptr 3 指標的型別是int 3...

指向結構體型別資料的指標

第六節 指向結構體型別資料的指標 三 用指向結構體的指標作函式引數 有時想將乙個結構體變數的值傳給另乙個函式,但原來的c標準不允許用結構體變數作為函式引數。那麼用什麼方法來解決這個問題呢?有兩個方法 用結構體變數的成員作引數。例如,用stu 2 name作函式實參,將實參值傳給形參。用法和用普通變數...

指向結構體型別資料的指標

第六節 指向結構體型別資料的指標 三 用指向結構體的指標作函式引數 有時想將乙個結構體變數的值傳給另乙個函式,但原來的c標準不允許用結構體變數作為函式引數。那麼用什麼方法來解決這個問題呢?有兩個方法 用結構體變數的成員作引數。例如,用stu 2 name作函式實參,將實參值傳給形參。用法和用普通變數...