c++ primer 阅读 day13

  • 不要返回局部对象的引用或指针

  • 返回类累心的函数和调用运算符

  • 引用返回左值

  • 列表初始化返回值

  • 主函数main的返回值

  • 调用重载的函数

      (a). int calc(int,int);
        int calc(const int, const int);
        //定义一个整型函数calc,有两个const int型形参,与上一个
        //定义等价,重复声明
    
    (b). int get();
       double get();
       //定义一个double型函数,声明有问题,函数进行调用时,因为函数的形参
       //为空,编译器无法判读调用哪个函数
    
    (c). int *reset(int *);
       double *reset(double *); 
       //定义一个指针函数,类型为double *,形参类型也是double *
    
  • 重载和作用域
    内层将会隐盖外层的函数,只调用内部函数,函数名字查找发生在类型检查之前。

  • 默认实参
    将多个形参设定为默认值,注意,如果第一个形参有默认值,那么后面的形参也必须要有默认值。
    默认实参声明

  /*
练习6.54
编写函数的声明,令其接受两个int形参并返回类型也是int;然后声明一个vector对象,令其元素是指向该函数的指针。
int func(int a,int b);
typedef int (*pf)(int,int);
std::vector v;

int func(int,int);
using pFunc = decltype(func) *;
std::vector v1;

*/

#include 
#include 
#include 
using std::vector;
using std::cout;

inline int f(const int,const int);
typedef decltype(f) fp;

inline int numAdd(const int n1,const int n2) {return n1+n2;}
inline int numSub(const int n1,const int n2) {return n1-n2;}
inline int numMul(const int n1,const int n2) {return n1*n2;}
inline int numDiv(const int n1,const int n2) {return n1/n2;}

vector v{numAdd,numSub,numMul,numDiv};

int main()
{
    //
    // @brief Exercise 6.56
    // @note Call each element in the vector and print their result.
    //
    for(auto it = v.cbegin();it != v.cend();++it)
        cout <<(*it)(2,2)<

下面看第7章

你可能感兴趣的:(c++ primer 阅读 day13)