<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>

            c++函數指針使用示例

            時間:2025-11-09 23:01:50 C語言

            c++函數指針使用示例

              設計一個名為estimate()的函數,估算編寫指定行數的代碼所需的時間,并且希望不同的程序員都可以使用該函數。以下是為大家分享的c++函數指針使用示例,供大家參考借鑒,歡迎瀏覽!

              需求

              假設要設計一個名為estimate()的函數,估算編寫指定行數的代碼所需的時間,并且希望不同的程序員都可以使用該函數。

              對于所有的用戶來說,estimate()中一部分代碼都是相同的,但該函數允許每個程序員提供自己的算法來估算時間。

              為實現目標,采用的機制是,將程序員要使用的算法函數的地址傳遞給estimate()。

              實現代碼如下

              復制代碼 代碼如下:

              /pic/p>

              /pic/p>

              #include "stdafx.h"

              #includedouble betsy(int);

              double pam(int);

              /pic/p>

              void estimate(int lines,double (*pf)(int));

              int _tmain(int argc, _TCHAR* argv[])

              {

              using namespace std;

              int code;

              cout<<"How many lines of code do you need?"<<endl;

              cin>>code;

              cout<<"Here's Betsy's estimate:"<<endl;

              estimate(code,betsy);

              cout<<"Here's Pam's estimate:"<<endl;

              estimate(code,pam);

              get);

              get);

              return 0;

              }

              inline double betsy(int lines){return 0.05*lines;}

              inline double pam(int lines){return 0.03*lines+0.004*lines*lines;}

              inline void estimate(int lines,double (*pf)(int))

              {

              using namespace std;

              cout<<lines<<" lines will take "<<(*pf)(lines)<<"hour(s)"<<endl;

              }

              運行結果

              使用函數指針的好處

              以上設計有助于今后的程序開發。當某個程序員為估算時間開發自己的算法時,他將不需要重新編寫estimate()函數。相反,他只需要提供自己的函數地址,并保證該函數的參數和返回類型正確即可。

              函數指針使得程序員可以修改estimate()的行為,雖然他接觸不到estimate()的源代碼。

              內聯函數

              由于函數實現的功能較簡單,所以可以使用內聯函數來代替常規函數。

              要使用內聯函數(C++的新特性,用于提高程序運行速度),必須采取下述措施之一:

              在函數聲明前加上關鍵字inline

              在函數定義前加上關鍵字inline

              內鏈函數的運行速度比常規函數稍快,但代價是需要占用更多內存。如果程序在10個不同的地方調用了同一個內聯函數,則改程序將包含該函數代碼的10個副本,如下圖所示:

              什么情況下應該考慮使用內聯函數?

              函數代碼執行時間很短

              如果使用C語言的宏執行了類似函數的功能,應考慮將他們轉換為C++內聯函數

              注意:當函數過大或函數遞歸 了,則編譯器可能不會將其視為內聯函數對待。

            【c++函數指針使用示例】相關文章:

            C++函數指針學習教程11-09

            C語言指針函數和函數指針詳解12-08

            c/c++中指針使用主要問題03-03

            C++ this指針詳解08-28

            C語言中指針函數與函數指針有何區別02-28

            C++的字符串分割函數的使用詳解10-16

            C語言的指針型函數02-20

            C語言函數指針變量11-27

            C語言函數指針與回調函數詳解11-08

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院