歡迎使用我的 在線工具

          小D

          讀歷史、看小說(shuō)、寫(xiě)程序都是我所愛(ài)。技術(shù)不好,頭腦不靈光,靠的是興趣。
          隨筆 - 35, 文章 - 25, 評(píng)論 - 13, 引用 - 0
          數(shù)據(jù)加載中……

          關(guān)于函數(shù)

          #include<iostream>
          #include "string"
          using namespace std;
          /*
          size_t count_calls()
          {
          ?static size_t ctr = 0;
          ?return ++ctr;
          }
          */
          //不可以間隔省,不可以向后省,具體自己以編譯器的角度理解
          /*
          string screenInit(string::size_type height = 24,
          ????? string::size_type width = 80,
          ????? char background = ' ')
          {
          ?return "";
          }
          */

          bool lengthCompare(const string &str1, const string &str2)//聲明一個(gè)函數(shù)
          {
          ?if(str1.length() >= str2.length())
          ??return true;
          ?else
          ??return false;
          }

          void useBigger(const string &, const string &,
          ????? bool(const string &, const string &));//將函數(shù)指針作為參數(shù)
          void useBigger(const string &, const string &,
          ????? bool (*)(const string &, const string &));//也可以這樣傳遞函數(shù)指針。

          int (*ff(int))(int *, int);//返回指向函數(shù)的指針,需要從里往外理解
          //很難理解大致為 有一個(gè)ff(int)函數(shù),他帶有(int *, int)的參數(shù),返回一個(gè)int
          //可使用typedef簡(jiǎn)化為
          typedef int (*FF)(int *, int)
          FF ff(int)
          //真雞巴復(fù)雜


          int main()
          {
          /*?
          ?typedef bool (*cmpFcn)(const string &, const string &); //只要函數(shù)類(lèi)型相同皆可
          ?//所謂的函數(shù)類(lèi)型,是指函數(shù)參數(shù)及其類(lèi)型、個(gè)數(shù)、順序等,還有返回值
          ?cmpFcn pf1 = 0;
          ?cmpFcn pf2 = lengthCompare;
          ?pf2("111","2222");//直接引用函數(shù)名等效于在函數(shù)名上應(yīng)用取地址操作符
          ?pf1 = pf2;
          ?pf1("2222","111");//不需要使用解引用操作符*,直接通過(guò)指針調(diào)用函數(shù)。
          */?
          /*
          ?for(size_t i = 0;i != 100; ++i)
          ??cout<<count_calls()<<endl;
          ?return 0;
          */

          ?

          return 0;
          }

          ?

          最后加幾點(diǎn)注意:

          1.? 千萬(wàn)不要返回局部對(duì)象的引用,因?yàn)榫植繉?duì)象已被回收,所以引用將會(huì)變成空引用,而返回對(duì)象執(zhí)行的是值拷貝,也就是重新生成了一個(gè)對(duì)象。

          2. 如果不希望引用返回的值被修改,返回引用請(qǐng)聲明為const,同理形參也是一樣,如果不希望被修改請(qǐng)?jiān)O(shè)為const。

          3. 千萬(wàn)不要返回局部對(duì)象的引用,基本和引用相同,方法返回后局部對(duì)象被釋放,所以指針為垂懸指針。

          4. 默認(rèn)實(shí)參是通過(guò)給形參表中提供明確的初始值來(lái)指定的。在函數(shù)聲明中指定,而且在同一個(gè)文件中只能為一個(gè)函數(shù)指定一次。

          posted on 2009-11-04 19:19 vagasnail 閱讀(285) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): C\C++

          主站蜘蛛池模板: 泸溪县| 岗巴县| 绥中县| 通海县| 鹤岗市| 休宁县| 吴堡县| 双城市| 株洲县| 宣威市| 民乐县| 南安市| 皋兰县| 黑山县| 漠河县| 文成县| 克什克腾旗| 台中县| 乌兰县| 大竹县| 安徽省| 扶风县| 尉氏县| 车险| 东方市| 辽宁省| 扎兰屯市| 天水市| 辽阳县| 武穴市| 民和| 江永县| 礼泉县| 旌德县| 绥宁县| 蒙山县| 犍为县| 梧州市| 谷城县| 韶关市| 烟台市|