• 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.
       ...
    }
  • 相关阅读:
    idea config 文件
    python 时间相关
    python 限定类型
    windows 创建文件夹 链接
    java 笔记
    yml 字符串换行问题
    nginx 编译安装,问题
    git readme.md 文档头部写法
    git tag 相关操作
    敏捷开发
  • 原文地址:https://www.cnblogs.com/vanishfan/p/3314924.html
Copyright © 2020-2023  润新知