999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C++語言中共享機制的實現

2019-05-24 14:11:40趙娟
電腦知識與技術 2019年4期
關鍵詞:安全性

趙娟

摘要:本文主要介紹C++語言中通過全局變量、局部變量、類的數據成員、類的靜態數據成員、友元來實現了函數間、對象間的共享,在實現共享的同時,又保護了數據,使數據的安全性得到了提高。

關鍵詞:C++;數據;函數;安全性

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2019)04-0212-02

Abstract: This paper introduces that it shares data between function and object, through global variables, local variables, data members of the class, static data members of the class, a friend to achieve inter-function, in C ++ language. At the same time, it protects the data, so that data security has been improved.

Keywords: C ++; data; function; security

C++語言是一種面向對象的程序設計語言,它把數據和對數據的操作封裝到一起形成類,通過類的繼承和多態來實現代碼的重用。其中封裝的特性使得C++語言在很大程度上提高了數據的安全性,這也是C++區別與C語言的一大特點。在使用C++語言時,如何達到數據的共享,也是一大難點,并且共享的同時還要考慮如何提高數據的安全性,針對此問題,C++語言提供了5種共享機制,用來處理函數間、對象間的共享問題。

1 C++語言的共享機制

1.1 函數間的共享機制

(1) 使用全局變量實現共享

所謂的全局變量就是在函數外部定義的變量,它不屬于哪一個函數,其作用域范圍從聲明點開始到整個文件結束,在此期間,只要是在全局變量聲明之后定義的函數都可以使用該全局變量。所以只要將要共享的數據存放在全局變量里,需要共享數據的函數在全局變量之后定義,函數間使用同一個變量,可實現共享。

//f函數g函數通過全局變量實現數據global的共享

#include

using namespace std;

int global;//全局變量

void f()

{ global=5;}

void g()

{ cout<

int main()

{ f();

g();

return 0;}

(2) 使用局部變量實現共享

局部變量顧名思義其作用域范圍僅限于函數內部,如何實現函數間的數據共享呢?那就是通過參數傳遞,因為實參和形參都是局部變量,都有各自的作用域,我們將所要共享的數據設置為實參,函數間相互調用的時候實參傳形參,就實現了主調函數和被調函數之間的數據共享,其共享數據為實參的值。

//f函數g函數通過局部變量的參數傳遞實現數據global的共享

#include

using namespace std;

void g(int part)

{ cout<

void f()

{ int global=5;//要共享的數據

g(global);}

int main()

{ f();

return 0; }

(3) 使用類的數據成員實現共享

此種共享方式是利用類的封裝,將函數和所要共享的數據封裝到一個類里,這樣作為類的成員,函數可以訪問數據,實現了共享。同時由于封裝使得被共享的數據成為類的私有數據成員,類外無法直接訪問,所以數據的安全性得到了提高。

//f函數g函數通過類的封裝實現數據global的共享

#include

using namespace std;

class Application

{ public:

void f();

void g();

private:

int global;};

void Application::f()

{ global=5;}

void Application::g()

{cout<

int main()

{ Application MyApp;

MyApp.f();

MyApp.g();

return 0; }

(4) 使用友元函數實現共享

使用友元函數實現共享的前提必須是:類外的函數要共享類內的保護或者私有數據。類的封裝使得類內的私有或保護成員被隱藏起來了,類外無法直接訪問。類外的函數想要共享這些隱藏起來的成員,就必須破壞類的封裝,而友元機制剛好提供了此項功能,只需在類內將要共享數據的函數聲明為友元函數,類外函數就可以通過對象去訪問類內的私有或保護成員,對友元函數而言實現了共享,對其他類外的函數又實現了隱藏,保護了數據的安全性。

//set函數和show函數共享類Point的數據X,Y

#include

using namespace std;

class Point

{ public:

Point(int xx=0, int yy=0) {X=xx;Y=yy;}

friend void set(Point &a);

friend void show(Point &a);

private:

int X,Y;};

void set( Point& a)

{a.X=1; a.Y=2;}

void show( Point& a)

{cout<

int main()

{ Point p1(3,5);

set(p1);//set函數給對象p1的X,Y賦值

show(p1);//show函數輸出對象p1的X,Y值

return 0;}

1.2 對象間的共享機制

(1) 對象間共享數據

C++語言中,同一個類的對象間想要實現數據的共享,前提是這個共享的數據必須是本類公共的數據,不屬于任何一個對象;靜態數據成員剛好滿足這一條件,本類所有對象維護同一個拷貝,也就是說對于類而言,靜態數據成員是唯一的,也是公共的。對象間使用靜態數據成員時,就實現了共享,如果想要共享的數據的安全性更高,還可以將靜態數據成員設置為常類型,也就是類似常量的變量,只能初始化,不能被更新。

//對象A和對象B共享countP數據

#include

using namespace std;

class Point

{public:

Point(){countP++;}

Point(Point &p){countP++;}

static const int countP;};

int Point::countP=0;

int main()

{ cout<

Point A;

cout<

Point B(A);

cout<

(2) 對象間共享函數

對象間共享函數的原理與共享數據的原理相似,只要函數是本類唯一的,公共的,就可以實現共享,所以將要共享的函數設置為靜態的成員函數。

//對象A和對象B共享GetC()函數

#include

using namespace std;

class Point

{public:

Point(){countP++;}

Point(Point &p){ countP++;}

static void GetC()

{cout<<" Object count="<

private:

static int countP; };

int Point::countP=0;

int main()

{ Point::GetC(); //輸出初始對象個數

Point A;

A.GetC(); //Point::GetC();輸出對象個數

Point B(A);

B.GetC(); } //Point::GetC();輸出對象個數

2 結論

本文介紹了C++語言中函數間的四種方式和對象間共享的兩種方式,不論是函數間共享還是對象間共享,都要考慮兩點:一是如何實現共享;二是在能共享的前提下如何讓被共享的數據的安全性更高。在以上所有的方式中,將函數和數據封裝到類里,并把數據設置為類的私有常類型的數據成員,這樣函數間共享數據的安全性更高。而對象間共享時,只需要把被共享的數據設置為私有靜態常類型的成員,這樣對象間共享數據的時候,其安全性也得到了更大的保障。

參考文獻:

[1] 鄭莉等編著. C++語言程序設計[M]. 北京:清華大學出版社,第四版,2014.

[2] 馬榮貴. C++中共享數據的保護方法[J]. 長安大學學報,2005.

[3] 閔小玲. C++中數據共享的實現機制[J]. 黃石理工學院學報,2005.

[4] 聶豐英. 淺談靜態成員在C++中的應用[J]. 硅谷,2008.

[5] 廖鋒,胡麗平,楊巧合. C++語言中靜態數據成員和靜態成員函數的研究[J]. 電腦知識與技術,2006.

【通聯編輯:梁書】

猜你喜歡
安全性
兩款輸液泵的輸血安全性評估
新染料可提高電動汽車安全性
既有建筑工程質量安全性的思考
某既有隔震建筑檢測與安全性鑒定
基于安全性需求的高升力控制系統架構設計
加強廣播電視信息安全性的思考
科技傳播(2019年22期)2020-01-14 03:05:32
網約車安全性提高研究
活力(2019年17期)2019-11-26 00:42:18
注意藥酒服用的安全性
基層中醫藥(2018年6期)2018-08-29 01:20:20
田間施用滅幼脲在桃中的殘留安全性評估
ApplePay橫空出世 安全性遭受質疑 拿什么保護你,我的蘋果支付?
主站蜘蛛池模板: 亚洲无码视频喷水| 欧美激情综合| 东京热一区二区三区无码视频| 91年精品国产福利线观看久久 | 免费a级毛片18以上观看精品| 日韩黄色大片免费看| 日韩在线第三页| 国产精品自在在线午夜区app| 亚洲精品片911| 中文字幕日韩视频欧美一区| 亚洲日产2021三区在线| 欧美激情视频二区三区| 国产综合亚洲欧洲区精品无码| 国产情侣一区| 天堂成人av| 一级毛片免费高清视频| 久久久国产精品免费视频| 日韩在线播放欧美字幕| 国产精品综合色区在线观看| 国产一在线| 91麻豆精品视频| 一级香蕉人体视频| 亚洲精品无码抽插日韩| 无码精品国产dvd在线观看9久| 久久精品人人做人人爽97| 国产精品内射视频| 国产黄网永久免费| 无码国产伊人| 亚洲国产中文精品va在线播放| 91黄色在线观看| 成人亚洲视频| 欧美日韩中文字幕在线| a毛片在线| 精品国产三级在线观看| 色综合婷婷| 精品国产一二三区| 国产色网站| 国产一区二区视频在线| 国产情精品嫩草影院88av| 欧洲成人在线观看| 国产精品成人观看视频国产| 欧美在线一二区| 久久久久人妻一区精品色奶水| 国产在线高清一级毛片| 自偷自拍三级全三级视频| 久久午夜影院| 久久国产高潮流白浆免费观看| 999国产精品永久免费视频精品久久| 视频二区亚洲精品| 国产SUV精品一区二区6| 国产美女主播一级成人毛片| 麻豆国产精品| 国产99欧美精品久久精品久久| 免费看久久精品99| 乱人伦视频中文字幕在线| 色综合综合网| 色AV色 综合网站| 色婷婷亚洲综合五月| 精品国产成人高清在线| 亚洲中文字幕23页在线| 日本欧美成人免费| 热九九精品| 老熟妇喷水一区二区三区| 欧美色伊人| 国产91透明丝袜美腿在线| 亚洲欧洲日韩综合| 免费一级毛片在线播放傲雪网| 久久情精品国产品免费| 呦女精品网站| 久久国产高清视频| 亚洲精品无码在线播放网站| 手机永久AV在线播放| 国产成人免费手机在线观看视频| 激情六月丁香婷婷| 丁香六月综合网| 色网站免费在线观看| 亚洲成人免费在线| 欧美成人精品一级在线观看| 亚洲精品久综合蜜| 五月婷婷综合色| 国产成人三级| 国产精品亚欧美一区二区三区|