• c++ 参数传递之 非引用形参 GIS


    1 非引用实参

    每次调用函数时,都会重新创建该函数所有的形参,此时所传递的实参将会初始化对应的形参。

    形参的初始化与变量的初始化一样:如果形参具有非引用类型,则复制实参的值,如果形参为引用类型(第 2.5 节),则它只是实参的别名。

    指针形参————————————————可以修改实参指针指向的值,但是不能修改实参指针

    函数的形参可以是指针(第 4.2 节),此时将复制实参指针,

    如果函数形参是非 const 类型的指针,则函数可通过指针实现赋值,修改指针所指向对象的值:

    void reset(int *ip) 
    {
    *ip = 0; // changes the value of the object to which ip points
      ip = 0; // changes only the local value of ip; the argument is unchanged
    }

    调用 reset 后,实参依然保持原来的值,但它所指向的对象的值将变为 0:

    如果不想让实参指向的值发生改变。。加个const

    void reset(const  int *ip) 


    }

    const  形参 

    如果函数使用的 形参既不是引用形参也不是const 形参,那么可以给改参数传递 const 实参,当然 非const 实参也能传递

    这种行为源于 const 对象的标准初始化规则(第 2.4 节)。因为初始化复
    制了初始化式的值,所以可用 const 对象初始化非 const 对象,

    如果函数形参是const 形参 的话,而且不是引用类型的const 形参,

    void fcn(const int i) { /* fcn can read but not write to i */ } 

    由于实参仍然是以副本的形式传
    递,因此传递给 fcn 的既可以是 const 对象也可以是非 const 对象。

     

     

     

     

  • 相关阅读:
    hdu 5504 GT and sequence
    解决:Incorrect line ending: found carriage return ( ) without corresponding newline ( )
    hdu 5501 The Highest Mark(贪心+01背包)
    web开发学习之路是否有尽头
    2016年后web开发趋势是什么?
    使用 jQuery Mobile 与 HTML5 开发 Web App 系列文章目录
    web开发微信文章目录
    现代web开发需要学习的15大技术
    移动前端重构实战系列
    什么鬼,又不知道怎么命名class了
  • 原文地址:https://www.cnblogs.com/gisbeginner/p/2746698.html
Copyright © 2020-2023  润新知