最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C/C++編程筆記:什么是不透明指針?一文帶你明白!

2021-03-24 20:47 作者:C語言編程__Plus  | 我要投稿

什么是不透明指針?

顧名思義,不透明是我們看不到的。例如,木材是不透明的。不透明指針是指向數(shù)據(jù)結(jié)構(gòu)的指針,該數(shù)據(jù)結(jié)構(gòu)的內(nèi)容在定義之時不公開。



跟隨指針是不透明的。通過查看定義,無法知道STest結(jié)構(gòu)中包含的數(shù)據(jù)。

struct STest * pSTest;

將NULL分配給不透明的指針是安全的。

pSTest = NULL;

為什么不透明的指針?

在某些地方,我們只想提示編譯器“嘿!這是我們的客戶將使用的某些數(shù)據(jù)結(jié)構(gòu)。不用擔心,客戶將在準備編譯單元時提供其實現(xiàn)”。當我們處理共享代碼時,這種類型的設(shè)計是健壯的。請參見以下示例:

假設(shè)我們正在開發(fā)一個用于處理圖像的應用程序。由于我們生活在一個萬事俱備的世界中,而且購買設(shè)備的價格非常便宜,因此我們希望開發(fā)適用于Windows,Android和Apple平臺的應用程序。因此,根據(jù)我們的要求,有一個健壯,可擴展和靈活的好的設(shè)計將是很好的。我們可以擁有所有平臺都可以使用的共享代碼,然后不同的端點可以擁有平臺特定的代碼。

為了處理圖像,我們有一個CImage類,該API公開了API以處理各種圖像操作(縮放,旋轉(zhuǎn),移動,保存等)。

由于所有平臺都將提供相同的操作,因此我們將在頭文件中定義此類。但是,跨平臺處理圖像的方式可能有所不同。就像Apple可以使用與Windows不同的機制來訪問圖像的像素。這意味著API可能需要不同的信息集來執(zhí)行操作。因此,要處理共享代碼,這就是我們要做的事情:

Image.h:用于存儲類聲明的頭文件


.

Image.cpp:將在不同端點之間共享的代碼



Image_windows.cpp:特定于Windows的代碼將駐留在此處



Image_apple.cpp:特定于Apple的代碼將駐留在此處



從上面的示例可以看出,在定義CImage類的藍圖時,我們僅提及存在SImageInfo數(shù)據(jù)結(jié)構(gòu)。

SImageInfo的內(nèi)容是未知的?,F(xiàn)在,由客戶(Windows,Apple,Android)負責定義該數(shù)據(jù)結(jié)構(gòu)并根據(jù)其要求使用它

如果將來我們要為新的端點“ X”開發(fā)應用程序,那么該設(shè)計已經(jīng)存在。我們只需要為端點“ X”定義SImageInfo并相應地使用它即可。

請注意,上述示例是執(zhí)行此操作的一種方法。設(shè)計全部是關(guān)于討論和需求的。決定好設(shè)計時要考慮到許多因素。我們還可以具有特定于平臺的類,例如CImageWindows,CImageApple,并將所有特定于平臺的代碼放在此處。

文章來源丨極客(geeksforGeeks)

每天學點小知識,希望對你有幫助~

另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~

微信公眾號:C語言編程學習基地

分享(源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)

歡迎轉(zhuǎn)行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!



C/C++編程筆記:什么是不透明指針?一文帶你明白!的評論 (共 條)

分享到微博請遵守國家法律
师宗县| 永安市| 鹤峰县| 通州市| 凤山市| 富宁县| 玛沁县| 罗城| 正镶白旗| 兴仁县| 东台市| 灵寿县| 鲁甸县| 崇礼县| 峨边| 新源县| 桂林市| 奎屯市| 金坛市| 朔州市| 望谟县| 云梦县| 庄浪县| 游戏| 惠东县| 新田县| 钟山县| 香港 | 博湖县| 衡山县| 丰县| 吴忠市| 霸州市| 丹棱县| 镇沅| 乐业县| 木兰县| 山阳县| 松滋市| 呼伦贝尔市| 萨迦县|