欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

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

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊: 次

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

對(duì)于所有的用戶來(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ì)有助于今后的程序開發(fā)。當(dāng)某個(gè)程序員為估算時(shí)間開發(fā)自己的算法時(shí),他將不需要重新編寫estimate()函數(shù)。相反,他只需要提供自己的函數(shù)地址,并保證該函數(shù)的參數(shù)和返回類型正確即可。

函數(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í)行了類似函數(shù)的功能,應(yīng)考慮將他們轉(zhuǎn)換為C++內(nèi)聯(lián)函數(shù)
 注意:當(dāng)函數(shù)過(guò)大或函數(shù)遞歸 了,則編譯器可能不會(huì)將其視為內(nèi)聯(lián)函數(shù)對(duì)待。

上一篇:c++版線程池和任務(wù)池示例

欄    目:C語(yǔ)言

下一篇:c++11可變參數(shù)使用示例

本文標(biāo)題:c++函數(shù)指針使用示例分享

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/3743.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有