實際專案遇到如下要求:
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作函式實參,將實參值傳給形參。用法和用普通變數...