Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
常量参数存储在哪里(C++)?_C++_Function_Reference - Fatal编程技术网

常量参数存储在哪里(C++)?

常量参数存储在哪里(C++)?,c++,function,reference,C++,Function,Reference,令人赞叹的是,对于初学者来说,这是语言中一个棘手的角落。首先请注意,内存部分并不是真正相关的,因为语言规范并没有真正讨论它——它是编译器可以为自己做出的选择 中点1,2的参数1和2;是文字。它们可以非正式地绑定,匹配常量引用,但不匹配引用。因此 双中点常数双a、常数双b 可以使用文本调用,但 双中点双a双b 不行。更糟糕的是,有些编译器允许引用绑定作为语言扩展 最后,请注意,传递一个double by const引用并没有太大的意义,有时它可以用来防止调用站点的类型转换;只需按值传递即可: 双中

令人赞叹的是,对于初学者来说,这是语言中一个棘手的角落。首先请注意,内存部分并不是真正相关的,因为语言规范并没有真正讨论它——它是编译器可以为自己做出的选择

中点1,2的参数1和2;是文字。它们可以非正式地绑定,匹配常量引用,但不匹配引用。因此

双中点常数双a、常数双b

可以使用文本调用,但

双中点双a双b

不行。更糟糕的是,有些编译器允许引用绑定作为语言扩展

最后,请注意,传递一个double by const引用并没有太大的意义,有时它可以用来防止调用站点的类型转换;只需按值传递即可:


双中点双a,双b

对于第二个问题,我推荐你,因为他们应该解释它。每次有人说有错误,但没有提供错误细节,一个仙女就死了。请告诉我们错误是什么!策划部分的书也应该解释你的第一个问题。StackOverflow不能替代结构良好的学习。@StoryTeller:你不认为它深深地埋藏在语言中吗?加上一些顽皮的编译器允许将常量绑定到引用。@Bathsheba-可能是语言中的。在一本好的入门书中?没有,但是记忆部分呢?和const的功能,只是一个简短的回答?[上次编辑后]完全正确!但是,pass by const reference和普通pass by value有什么区别呢?@AdityaAgarwal:在你最近的评论中,pass by const reference禁止在调用站点进行隐式转换。在这种情况下,当参数是value literal时,正如你所说,它在任何情况下都不能被转换,是吗?因此,我只想知道,在按值传递和按常量传递两种情况下,内部工作的区别是什么。也就是说,这两种情况下的值存储在哪里?@AdityaAgarwal:这取决于特定的编译器。它们可能不会存储在任何地方:例如,编译器可能会选择内联函数。但如果你想知道更多,谷歌电话会议。
double midpoint(const double &a, const double &b){
    /*code*/ 
}
int main(){
    double x=midpoint(1,2);
    cout << x << endl;
}
double midpoint(double &a, double &b){
    /*code*/ 
}
int main(){
    double x=midpoint(1,2);
    cout << x << endl;
}