91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++框架該如何正確理解

發布時間:2021-10-27 18:32:52 來源:億速云 閱讀:165 作者:柒染 欄目:編程語言

本篇文章為大家展示了C++框架該如何正確理解,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

C++編程語言中,有很多比較重要的內容值得我們去深入研究。這些基礎內容的理解不但能幫助我們掌握C++,而且還能對其他語言的學習或多或少的有些幫助。

框架,在英文中叫做Framework。應用程序框架就叫做Application Framework。現在是framework滿天飛的時候,你沒有聽過框架,但是你肯定聽過.net framework這個詞。否則微軟的廣告就做的太水了。當然,.net framework是為了.net,其實主要是C#來做的,很多同學說,C++也可以啊,用CLR的C++就可以,不過帶CLR的C++還是C++嗎,而且既然用了CLR,為什么就不干脆來用C#呢?不過這個只是順便一說,因為我也沒有研究過CLR,也沒有用過CLR下的C++,沒有研究,沒有發言權。還是來談談C++下面的framework。

首先,要清楚的是沒有framework,我們能不能做開發,做應用。想想是可以的哦。在沒有framework的時候,我們直接調用函數,完成功能。just simple。

然后沒有framework和有framework,到底有什么區別。***的區別就是,沒有framework的時候,是我們call函數,而有framework的時候,是framework來call我們。

比較老牌的C++的framework,應該就是MFC了,MFC的全稱為Microsoft Foundation Class,也就是微軟基礎類庫,那不還是類庫嗎?好像沒有提到framework啊。不過你細看里面函數的話,可以看到很多函數的前綴為Afx,Af也就是Application Framework了。

那C++的STL,全稱為Standard Template Library,也就是標準模板庫,它是不是C++框架呢?我們看看它提供了些什么,它提供了字符串類,輸入輸出流,各種數據結構,以及算法。這些都是在我們的程序中,被我們調用來完成功能的,從我的觀點,它不能算是框架,而只是一套類庫。

那MFC呢,為什么它算是C++框架呢?首先提起MFC,想到的是什么。應該是界面吧。MFC提供了包括static,editbox,button,radio,list,tree等等控件,但是單單就是界面嗎?當我們點擊按鈕時,它會執行動作。這里面原來還綁定了函數。同時我們在對應的函數中寫下比如一個MessageBox,那到時候就會執行,顯示出這個消息框。這一切都是MFC在里面做,我們所需要做的,就是拖一個按鈕過來,加上對應的Buttonclick事件,然后在對應的函數中加上對應的實現就可以了。

原來framework就是,在我們寫我們的軟件之前,就將整個的執行流程給我們規定好了,我們在規定的點填空,然后就可以完成應用了。比如我在2009年寫一個軟件,但是MFC是在2000年(其實不是哈,舉例而已)就完成了。它怎么知道我要完成什么,然后再來調用我寫的這些函數,最終完成功能。

其實現在一般來實現框架,都是使用了面向對象技術,也就是我們常常聽到,聽得耳朵都生繭了,其實還沒有太明白的運行時綁定,也就是面向對象中封裝,繼承,多態中的多態行為。但是MFC那時,由于性能的原因,用虛函數比較少,主要用宏(在侯捷老師的書中叫做巨集,其實是一個東西)來完成,不過還是很多地方使用的虛函數。這個看深入淺出MFC來了解具體的原理吧。

作為framework,只需要定義一個superclass,然后你需要實現的時候,繼承這個superclass,無論是類,抽象類還是接口,然后實現它,這樣framework不需要知道你,它只需要知道superclass就可以運行了。而且是它來調用你。

其實這兩天想了一下,除了面向對象之外,我們C系統中用回調函數,其實也就是函數指針,不也是用來實現讓其他人來調用,自己來實現被調用的部分嗎?哦,其實也就是現在常常提到的控制反轉(還是依賴反轉)?不過C和C++的世界中,這些名詞提得比較少,一下子沒有聯系起來。

不過MFC完成的東西很多,windows消息的封裝,消息映射和消息路由是一部分,同時它也提供了CString等類給我們來使用,還提供了Document-View,還提供了序列化等等東西。

另外有名的C++框架,好像有個重量級的網絡開發框架叫ACE的,但是沒有了解過,僅僅是知道有這么一個東西。

linux算不算框架,從現在linux的驅動開發,使用模塊來進行開發的角度,似乎也可以認為這一套算是一個框架,只要注冊了模塊,那它就知道,也可以來調用。

另外,有插件機制的軟件,算不算框架?

我知道的有插件機制的軟件,比較古老的有Winamp,現在的有firefox,以及thunderbird這些Mozilla出的系列軟件,eclipse等,這些中eclipse肯定算是框架了,其他呢?

另外C++中,Qt,wXwidget等等,盡管沒有用過,但是應該也算是C++框架,而且是跨平臺的。

寫了一些東西,但是比較的亂,而且可能有些意思也沒有表達清楚,有空我還可以再整理整理,問題很大,對于框架,還有很多要去學的。模式都沒有學好,也沒法去把框架談好。

上述內容就是C++框架該如何正確理解,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

绵阳市| 平舆县| 丽水市| 西和县| 马山县| 思茅市| 抚顺市| 乐平市| 北辰区| 铜梁县| 四平市| 凤庆县| 柏乡县| 九龙坡区| 原平市| 苍溪县| 治多县| 潜山县| 株洲县| 丹凤县| 乃东县| 林周县| 囊谦县| 曲靖市| 静宁县| 昆明市| 桑植县| 乐平市| 临朐县| 儋州市| 蚌埠市| 马鞍山市| 安福县| 古浪县| 德江县| 兰溪市| 特克斯县| 山东| 胶南市| 黎城县| 河北省|