C++基础编程----6.2函数

来源:互联网 发布:使用波士顿矩阵实例 编辑:程序博客网 时间:2024/05/20 02:51

函数

1.引用返回的是左值,可以赋值
2.返回数组指针
 int (*func(int i))[10];
 int even[]={0,2,4,6,8};
 int odd[]={1,3,5,7,9};
 decltype(odd) *arrptr(int i)     //  decltype并不负责把数组类型转换成对应的指针类型,所以它的结果仍然是个数组 返回          数组指针
 {
  return i%2?odd:even;
 }
3.const_cast和重载
 const string &shorterString(const string& s1,const string &s2)
 {
  return s1.size()>s2.size()?s1:s2;
 }
 string &shorterString(string& s1,string &s2)         //   函数重载   该函数写的非常好  代码很漂亮
 {
  auto &r=shorterString(const_cast<const string&>(s1),
     const_cast<const string&>(s2));
  return const_cast<string &>(r);
 }
4.函数指针
 //  比较两个string对象的长度
 bool lengthCompare(const string &,const string &);      //  函数声明
 //  pf指向一个函数,该函数参数是两个const string&,返回值为bool类型
 bool (*pf)(const string &,const string &);      //  函数指针    (*pf)必须加括号,否则就变成了返回bool*类型
 pf = lengthCompare;   或者  pf =&lengthCompare;   //  等价赋值  &可选
 
 typedef  bool Func(const string &,const string &);
 void  useBigger(cosnt string &,const string &,Func);      //  Func函数类型,形参中会自动转换为函数指针类型   
 类似于:void  useBigger(cosnt string &,const string &,bool Func(const string &,const string &));  
 类似于:typedef decltype(lengthCompare)  *FuncP2;
               void  useBigger(cosnt string &,const string &,FuncP2);
5.尾置返回类型
 C++11中一种简化声明的方法,就是使用尾置返回类型。任何函数定义都能使用尾置返回类型。尾置返回类型都跟在形参列表的后面并以一个->符号开头,在本该返回类型的地方放置一个auto
 //  func接受一个int类型的实参,返回一个指针,该指针指向一个含有十个元素的数组
 auto func(int i)->int (*)[10];

0 0
原创粉丝点击