検索

ホームページ  >  に質問  >  本文

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_lee2813日前970

全員に返信(1)返信します

  • 黄舟

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

    今考えたことを振り返ってみると、実は 2 番目のステップに非常に大きな問題があり、const の初期化と代入を混同していました。 値渡しのプロセスでは、実際の操作は割り当てではなく引数でパラメータを初期化することですconst の場合、初期化中に次のような const 型の初期値を与えることができます。 リーリー

    したがって、前の関数のパラメーターの定義はすでに非常に明確であり、どのように変換しても、引数にどのような値が含まれていても、

    型に変換する必要があります。 🎜> の書き込み理由は使用できません。 const intプログラムを書かない自分がどれほど愚かなのか本当にわかりません。 。 。 i

    返事
    0
  • キャンセル返事