C++Primer笔记-----day04
1.函數指針。
函數指針指向某種特定類型,函數的類型由它的返回類型和形參類型決定,與函數名無關。
比如:bool lengthCompare(const string &,const string &);
該函數的類型為bool(const string &,const string &)
聲明一個指向該函數的指針,只需將函數名替換為指針即可:bool (*pf)(const string &,const string &)。(*pf)的括號不可以省略!
使用函數指針:pf = funcName;或者pf = &funcName 均可。
需要注意的是,函數指針不存在轉換規則,pf的類型必須與函數完全匹配(無論是函數返回值還是形參類型)
比如 string sumLength(const string&,const string&);
bool cstringCompare(const char*,const char*);
bool lengthCompare(const string &,const string &);
pf = sumLength; // 錯誤,函數返回類型不匹配
pf = cstringCompare; // 錯誤,形參類型不匹配
pf = lengthCompare; // 完全正確
我們還可以通過指向函數的函數指針直接調用該函數:bool b = pf("hello","goodbye");
2.關于this指針。
成員函數通過一個名為this的【額外的隱式參數】來訪問調用它的那個對象。
當我們調用一個成員函數時,用請求該函數的對象的地址來初始化this
例如,類 A有一個成員函數foo();
A a;
a.foo(); // 編譯器負責把a的地址傳遞給foo()的隱式形參this,相當于A::foo(&a)。
所以我們可以在成員函數的內部使用this,通過this直接訪問對象的成員。
注意點:默認情況下,this的類型是指向類類型非常量版本的常量指針,在這個例子中為 A *const,所以this是一個常量指針,不允許改變this的地址,this總是指向“這個”對象。
this是一個常量指針,根據初始化規則,所以不能把this與常量對象綁定在一起,
所以,有時候需要修改this為const A *const,這時只需在成員函數的形參列表之后加一個const就可以完成。這類成員函數被稱為常量成員函數。
常量對象,以及常量對象的引用、指針,都只能調用常量成員函數。
非常量對象可以調用常量成員函數,也可以調用非常量成員函數。
?
轉載于:https://www.cnblogs.com/ll-10/p/9599906.html
總結
以上是生活随笔為你收集整理的C++Primer笔记-----day04的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络简单理解
- 下一篇: 常用的排序算法的时间复杂度和空间复杂度