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

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

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

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

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

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

實(shí)現(xiàn)代碼如下

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

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

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

運(yùn)行結(jié)果

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

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

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

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

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

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

相關(guān)文章

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

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

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

    C++使用curl庫(kù)進(jìn)行http請(qǐng)求的方法詳解

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

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

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

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

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

    C語(yǔ)言簡(jiǎn)明講解類(lèi)型轉(zhuǎn)換的使用與作用

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

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

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

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

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

    深入講解Socket原理

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

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

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

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

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

最新評(píng)論