欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c++函數(shù)指針使用示例分享

 更新時間:2014年03月12日 16:17:09   作者:  
這篇文章主要介紹了c++函數(shù)指針使用示例,需要的朋友可以參考下

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

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

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

實現(xiàn)代碼如下

復(fù)制代碼 代碼如下:

// funpointer.cpp : 定義控制臺應(yīng)用程序的入口點。
//
#include "stdafx.h"
#include <iostream>double betsy(int);
double pam(int);

//estimate函數(shù)的第二個參數(shù)接受一個函數(shù)指針
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);
    getchar();
    getchar();
    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;
}

運行結(jié)果

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

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

內(nèi)聯(lián)函數(shù)
由于函數(shù)實現(xiàn)的功能較簡單,所以可以使用內(nèi)聯(lián)函數(shù)來代替常規(guī)函數(shù)。

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

在函數(shù)聲明前加上關(guān)鍵字inline
在函數(shù)定義前加上關(guān)鍵字inline
內(nèi)鏈函數(shù)的運行速度比常規(guī)函數(shù)稍快,但代價是需要占用更多內(nèi)存。如果程序在10個不同的地方調(diào)用了同一個內(nèi)聯(lián)函數(shù),則改程序?qū)摵瘮?shù)代碼的10個副本,如下圖所示:

什么情況下應(yīng)該考慮使用內(nèi)聯(lián)函數(shù)?
 函數(shù)代碼執(zhí)行時間很短
如果使用C語言的宏執(zhí)行了類似函數(shù)的功能,應(yīng)考慮將他們轉(zhuǎn)換為C++內(nèi)聯(lián)函數(shù)
 注意:當函數(shù)過大或函數(shù)遞歸 了,則編譯器可能不會將其視為內(nèi)聯(lián)函數(shù)對待。

相關(guān)文章

  • C++靜態(tài)庫與動態(tài)庫文件的生成和使用教程

    C++靜態(tài)庫與動態(tài)庫文件的生成和使用教程

    庫文件是計算機上的一類文件,可以簡單的把庫文件看成一種代碼倉庫,它提供給使用者一些可以直接拿來用的變量、函數(shù)和類,下面這篇文章主要給大家介紹了關(guān)于C++靜態(tài)庫與動態(tài)庫文件的生成和使用的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • C++使用curl庫進行http請求的方法詳解

    C++使用curl庫進行http請求的方法詳解

    這篇文章主要為大家詳細介紹了C++如何使用curl庫進行http請求,并且實現(xiàn)獲取返回的頭信息的時間,也就是獲取后臺服務(wù)的當前時間,感興趣的可以了解一下
    2023-07-07
  • c語言處理函數(shù)調(diào)用的方法

    c語言處理函數(shù)調(diào)用的方法

    函數(shù)就是一段封裝好的,可以重復(fù)使用的代碼,它使得我們的程序更加模塊化,不需要編寫大量重復(fù)的代碼。這篇文章主要介紹了c語言是如何處理函數(shù)調(diào)用的?需要的朋友可以參考下
    2021-11-11
  • C++實現(xiàn)添加圖片水印到PDF文檔

    C++實現(xiàn)添加圖片水印到PDF文檔

    水印是顯示在文檔內(nèi)容后面的淡色文字或圖片,可以用于指示文檔的狀態(tài)(保密、草稿等),本文主要為大家介紹了如何使用?Spire.PDF?for?C++?在?PDF?文檔中添加圖片水印,需要的可以參考下
    2023-11-11
  • C語言簡明講解類型轉(zhuǎn)換的使用與作用

    C語言簡明講解類型轉(zhuǎn)換的使用與作用

    類型轉(zhuǎn)換(type?cast),是高級語言的一個基本語法。它被實現(xiàn)為一個特殊的運算符,以小括號內(nèi)加上類型名來表示,接下來讓我們一起來詳細了解
    2022-04-04
  • Qt網(wǎng)絡(luò)編程實現(xiàn)TCP通信

    Qt網(wǎng)絡(luò)編程實現(xiàn)TCP通信

    這篇文章主要為大家詳細介紹了Qt網(wǎng)絡(luò)編程實現(xiàn)TCP通信,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語言實現(xiàn)數(shù)據(jù)的壓縮與解壓

    C語言實現(xiàn)數(shù)據(jù)的壓縮與解壓

    數(shù)據(jù)壓縮是通過一系列的算法和技術(shù)將原始數(shù)據(jù)轉(zhuǎn)換為更緊湊的表示形式,以減少數(shù)據(jù)占用的存儲空間,數(shù)據(jù)解壓縮則是將壓縮后的數(shù)據(jù)恢復(fù)到原始的表示形式,本文給大家詳細介紹了C語言實現(xiàn)數(shù)據(jù)壓縮與解壓,需要的朋友可以參考下
    2023-08-08
  • 深入講解Socket原理

    深入講解Socket原理

    這篇文章深入的講解Socket原理,并附帶實例代碼。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-12-12
  • C語言超細致講解循環(huán)語句

    C語言超細致講解循環(huán)語句

    我們說到當滿足特定條件時,就會執(zhí)行if語句或者switch語句后面的語句,否則不執(zhí)行,但是這只能執(zhí)行一次,在日常生活中,有些事情是需要重復(fù)去做的,C語句就為此引入了循環(huán)語句。所以今天繼續(xù)為大家分享C語言循環(huán)家族
    2022-05-05
  • 使用root權(quán)限運行自己所編譯程序的解決方法

    使用root權(quán)限運行自己所編譯程序的解決方法

    本篇文章介紹了,使用root權(quán)限運行自己所編譯程序的解決方法。需要的朋友參考下
    2013-05-05

最新評論