• 第八章


    1、C++内联函数

    正常在遇到函数调用指令时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈,跳到标记函数起点的内存单元,执行函数代码,然后调回到地址被保存的指令处!

    在使用内联函数后,编译器将使用相应的函数代码替换函数调用,但每执行一次就会产生一个副本,所以会产生一定的内存开销。故如果代码的执行时间很短,内联函数就可节省原来进行函数调用的绝大部分时间。

    注意:内联函数是按值传递的,而宏#define 不是按值传递的!

    2、引用变量

    int rats=101;

    int &rodents=rats;   //引用,必须在申明引用时将其初始化,不能像指针那样先申明再赋值

    int *prats=&rats;     //指针

    void swapr(int & a,int &b);        //引用实参一定要是变量,不能是常量

    void swapp(int *p1,int *p2);     //

    void swap(int a,int b);            //值将不会改变,因为变量a,b只是复制了实参的值的新变量,因此原值没有改变。

    结构和类传递给函数时通常都是通过引用传递的。

    基类引用可以指向派生类对象,而无需进行强制类型转化!

    如:ofstream 是ostream类的派生类,ostream &的类型参数可以接受ostream对象。

    ofstream fout;

    ostream cout;

    void file_it(ostream &os,double fo,const fe[],int n);

    则file_it(fout,objective,eps,5);  //将输入到文本中

       file_it(cout,objective,eps,5);  //将输入到屏幕上

    在修改时:ios::base::fmtflags initial;

                      initial =os.setf(ios_base::fixed);   // 保存修改前的格式

                    ……  os.setf(initial);           //      恢复之前的格式

    3、默认参数

    设置默认值要通过函数原型,且在设置时必须从右到左添加默认值,而实参则按照从左到右的顺序赋给相应的形参。

    4、函数重载(函数多态)

    函数重载的关键是函数的参数列表--函数特征值,与其他都无关。如:参数引用与未引用是一样的,函数返回的类型也不考虑。

    当函数只是参数的个数减少则用默认参数的函数简单些,并且程序也只需为一个函数请求内存;而如果要使用不同类型的参数时,则默认参数便不管用,这时应使用函数重载。

    5、函数模板

    template <typename T>     //也可以换成template<class T>,申明时不需加上分号

    void Swap(T&a,T&b)

    {

     T temp;

    temp=a;

    a=b;

    b=temp;

    }

    模板也可以重载,具体化显示

    具体化优先于常规模板,而非模板函数优先于具体化和常规模板。

    具体化声明:  template<>void Swap<job>(job &,job&);   //<job>是可选的

                      

    实例化申明: template void Swap(int ,int );  //不能在同一文件中使用同一种类型的显示实例化课显示具体化。

    可对一些类型不匹配的参数在调用时进行实例化,从而强制类型转化。

                       

  • 相关阅读:
    .net core 3.1 新增过滤器(Filter)和拦截器(LogInterceptor)
    .net core 3.1 新增log4net 和 NLog
    .net core 3.1 jwt token授权
    IdentityServer4 之 Resource Owner Password Credentials 其实有点尴尬
    IdentityServer4 之Client Credentials走起来
    Hive 窗口函数sum() over()求当前行和前面n条数据的和
    机器学习-线性规划(LP)
    机器学习-KNN算法
    flume整合kafka
    学习kafka自己发生的几个小错误记录
  • 原文地址:https://www.cnblogs.com/daocaorenblog/p/4803276.html
Copyright © 2020-2023  润新知