Fooling a c++ compiler. Passing int instead of a cont int into function

后端 未结 2 513
陌清茗
陌清茗 2021-01-29 16:14

How can i pass an int into a function that is expecting a const int.

Or is there a way of modifying cont int value?

Edit: I Sho

2条回答
  •  悲&欢浪女
    2021-01-29 16:54

    A top level const in a function parameter list is completely ignored, so

    void foo(const int n);
    

    is exactly the same as

    void foo(int n);
    

    So, you just pass an int.

    The only difference is in the function definition, in which n is const in the first example, and mutable in the second. So this particular const can be seen as an implementation detail and should be avoided in a function declaration. For example, here we don't want to modify n inside of the function:

    void foo(int n); // function declaration. No const, it wouldn't matter and might give the wrong impression
    
    void foo(const int n) 
    {
      // implementation chooses not to modify n, the caller shouldn't care.
    }
    

提交回复
热议问题