찾다

 >  Q&A  >  본문

arguments - C++ const 形参和实参的类型问题

最近在学习C++ Primer 5th(英文版), 函数(章节6),P.216。这里有一个例子如下:

voide fcn(const int i) //fcn can read but not write to i。

按照书上自己的定义(P.203),函数的形参和实参的类型必须是匹配的,或者有形参的隐式转换。那么对这个例子来说,我的思路是:

我写了一段代码来测试,编译器报错说不能对只读形参操作。

#include <iostream>
using namespace std;
void const_parameter(const int i);
int main(int argc, char const *argv[])
{
    const int a = 1;
    const_parameter(a);
    return 0;
}
void const_parameter(const int i){
    ++i; // try to modify parameter i but failed.
}

我的问题是,为什么这里是只读形参?如果是只读形参,那这个只读形参是怎么接受实参的拷贝的?谢谢!

ringa_leeringa_lee2853일 전1012

모든 응답(1)나는 대답할 것이다

  • 黄舟

    黄舟2017-04-17 15:28:51

    지금 생각해보니 사실 두 번째 단계에서 const의 초기화와 할당을 혼동하는 아주 큰 문제가 있었던 것 같습니다. 값 전달 과정에서 실제로는 할당이 아닌 인수로 매개변수를 초기화하는 작업이 수행됩니다. const의 경우 초기화 중에 const 유형의 초기 값을 제공할 수 있습니다. 예:

    으아악

    그래서 이전 함수의 매개변수 정의는 이미 매우 명확합니다. 어떻게 변환하든, 인수에 어떤 값이 있든 const int 유형으로 변환해야 합니다. 🎜> 작성 이유는 사용할 수 없습니다. i프로그램을 쓰지 않으면 제가 얼마나 멍청한지 정말 모릅니다. . .

    회신하다
    0
  • 취소회신하다