C++函数参数为引用或指针

  • 引用或指针作为形参与普通形参的区别?
    引用或者指针作为函数形参,可以在函数中改变实参的值。普通形参只是实参的拷贝副本,函数中修改形参并不能修改实参的值。
  • 函数参数用引用或指针  的情况?
    1)当需要在函数中修改实参的值时;
    2)当无法实现对象复制时;如:拷贝构造函数的参数必须用本类对象的引用;
    3)当实参为大型对象时,复制回耗费时间和空间;

  • 引用和指针作为形参可以改变实参的值,那么当实参的值不允许修改或者不需要修改时,能不能使用引用或者指针作为形参呢?
    当然可以!只需加上const关键字即可实现。如:const int &a,const int *a 表示无法通过形参的引用或者指针修改实参的值。

  • 什么情况下引用或指针作为形参时,必须有const?
    当实参为const型常量或者为字符串常量等常量时,形参可以是普通形参,也可以是引用或指针。
    形参如果使用引用或者指针,则必须使用const型引用或指针。否则会编译报错,类型不匹配。因为引用或者指针可以改变实参的值,而实参为常量,不允许改变。可以看成是对于变量的约束可以变强,但是不能变弱。
    形参如果为普通形参时,则不需要使用const,因为普通形参只是对实参的复制,在函数中如何修改都不会影响到常量实参。
原文地址:https://www.cnblogs.com/beaglebone/p/5725950.html