zoukankan      html  css  js  c++  java
  • C++默认参数不能是一个引用

    引用做参数时不能传一个定值(如数字或者const等~~~)

     

    somefunc(int& a = 4) -> default argument for ‘int& a’ has type ‘int’

    Is there a solution for it that isn't playing with pointers?

    My aim is to have a function that would take an int as a parameter by reference, but when no int is passed, a default int is given, but that default has to be by reference too - i don't know how to achieve it though.
    You are asking for the impossible. Consider: no int is passed, so the default int value is used. The function modifies the value of the argument. Effectively, the default int value has changed! This is powerful, as it allows you to make the value of say, 0 become 1 (i.e., the int literal 0 becomes the int literal 1, meaning that 0 == 1 is true).

    Perhaps you actually do not want to modify the argument, thus passing by value or const reference will do?
    You can't take a reference of a constant, so if you did "somefunc(4)" with the above declaration (without the default) it would also fail. 

    The reason to have a reference is that you will be able to modify the passed in variable. Since a constant can't be changed, it's kind of meaningless to pass in a constant as a reference, even if the compiler would allow it. 

    We may be able to give you an option if you explain further what you actually are trying to achieve with this. 

    One alternative is of course to declare two functions:
    Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void somefunc(int &a)
    {
        // this is called with one integer parameter.
       ...
    }
     
    void somefunc()
    {
       // This is called when no parameter is given.
       ...
    }
  • 相关阅读:
    第一次作业
    机器学习第一次个人作业
    第02组 Beta版本演示
    第02组 Beta冲刺(4/4)
    第02组 Beta冲刺(3/4)
    微信小程序信息会话列表删除功能
    微信小程序自定义弹窗组件
    微信小程序使用Echarts
    uni.showModal,uni.showToast使用
    Array filter() 方法
  • 原文地址:https://www.cnblogs.com/vanishfan/p/3314924.html
Copyright © 2011-2022 走看看