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.
       ...
    }
  • 相关阅读:
    Web服务器安全设置
    java大文件读写操作,java nio 之MappedByteBuffer,高效文件/内存映射
    Java IO和Java NIO在文件拷贝上的性能差异分析
    Java高效读取大文件
    NIO入门之轻松读取大文件
    我来说说java的NIO
    java读取大文件 超大文件的几种方法
    @RequestBody 的正确使用办法
    友鱼项目知识点
    怎样查看Tomcat动态控制台信息
  • 原文地址:https://www.cnblogs.com/vanishfan/p/3314924.html
Copyright © 2011-2022 走看看