五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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++編程筆記:什么是不透明指針?一文帶你明白!的評論 (共 條)

分享到微博請遵守國家法律
吉林市| 梓潼县| 闸北区| 新邵县| 法库县| 清苑县| 玉龙| 泽普县| 延安市| 宣汉县| 卓资县| 互助| 大英县| 郯城县| 万全县| 墨玉县| 雅江县| 崇仁县| 洞头县| 双江| 东方市| 扬州市| 贞丰县| 汪清县| 施秉县| 会东县| 通城县| 正镶白旗| 潞西市| 五大连池市| 庄河市| 吴堡县| 甘南县| 岐山县| 天水市| 山丹县| 丹寨县| 巴南区| 合川市| 广德县| 和平区|