??????????????
????1????ζ????????????????????????????????????????????????????????β???????????????????????????????????????????????????????βα????????Щ?????
?????????????????????????????????????
????bool lengthCompare(const string&?? const string&);
?????????????????????bool(const string&?? const string&) ???????????????????????????????????????????壺
????bool (*pf) (const string&?? const string&);
????????????*pf?????????????????????pf???????????????壬?????????????????bool????????
????2????????????????????????????ú???????????????????????????????????????pf???????
????pf = lengthCompare;
????pf = &lengthCompare;
?????????????????????
???????????ú?????????????????????????????????á?
????bool b1 = pf("hello"??"goodbye");
????bool b2 = (*pf)("hello"??"goodbye");
????3??????????????????????????????????????????????????????????????????????nullptr????0??????????????????????????????κ??????????
????4????????????????????????????????????????????????β???????????????????????????????庯???????????????????????????????????????????????????????????????е???????????
????void ff(int*);
????void ff(int);
????void ff(unsigned int);
????void (*pf)(unsigned int) = ff; // pf???ffunsigned int)
????int num = 42;
????pf(num); // num??????unsigned????
????5????????????????????????βΡ?
?????е?????????????????????????????????????????????????綨??????????????????????????н?????????????????????????????????????????
????const string& BigString(const string& s1?? const string& s2?? bool pf(const string& ??const string&));
????const string& BigString(const string& s1?? const string& s2?? bool (*pf)(const string& ??const string&));
???????漲?????????????е???????????????庯???????????????????
????// ???庯??????
????typedef bool Func(const string&?? const string&);
????typedef decltype(lengthCompare) Func;
????// ???????????
????typedef bool (*Func)(const string&?? const string&);
????typedef decltype(lengthCompare)* Func;
???????????????壬????????BigString????????
????const string& BigString(const string& ??const string?? Func);
????6??????????????????????
??????????????????????????????????????????????????????????
?????????????????????????????????????????
????using F = int(int*??int); // F?????????int????????????int????????????int?????F????????????
????using PF = int(*) (int*?? int); // PF????????????????
?????????????????巵??????????????
????PF f(int); // f???????????????????????????
????F f(int); // ????:F?????????????
????F* f(int); // OK
??????????????????????f:
????int (*f(int)) (int*??int);
??????????????????f??????βα?(int)??????f??????????????f???????????*?????f????????????????????????????????????????βα????????????????ú??????????????int??
???????????????C++11?е?β?÷????????????????????????????????
????auto f(int) -> int (*)(int*?? int);
????????????????????????????????????????????????????decltype????????????????
????int func(int*??int);
????decltype(func)* f(int);
????????????????decltype(func)??????????????????????????????????*????????????????????