您的位置:首页 > 编程语言 > C语言/C++

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

2015-10-29 16:55 519 查看

函数

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];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数