C++ const int*const fun(const int*const&;p)const;

C++ const int*const fun(const int*const&;p)const;,c++,constants,pass-by-reference,C++,Constants,Pass By Reference,我试图找出这个给定函数原型的输入参数。我在这两者之间争论,不确定哪一个是正确的 输入是一个const引用,它引用一个const int指针。因此,引用是常量,指针是常量,但它指向的值可以更改 输入是指向常量整数的常量int指针的常量引用 输入是一个const引用,它引用一个const int指针。因此,引用是常量,指针是常量,但它指向的值可以更改 不是真的。参数p不能更改为指向其他对象。p指向的对象的值也不能更改 输入是指向常量整数的常量int指针的常量引用 const int* const f

我试图找出这个给定函数原型的输入参数。我在这两者之间争论,不确定哪一个是正确的

  • 输入是一个const引用,它引用一个const int指针。因此,引用是常量,指针是常量,但它指向的值可以更改
  • 输入是指向常量整数的常量int指针的常量引用 输入是一个const引用,它引用一个const int指针。因此,引用是常量,指针是常量,但它指向的值可以更改

    不是真的。参数
    p
    不能更改为指向其他对象。
    p
    指向的对象的值也不能更改

    输入是指向常量整数的常量int指针的常量引用

    const int* const fun(const int* const& p) const;
    
    有点


    p
    是对指向常量整数的常量指针的引用。

    输入是对指向常量整数的常量指针的引用

    const int* const fun(const int* const& p) const;
    
    第一个常量表示int对象本身是常量,不能更改。第二个常量表示无法更改该int上的指针。然后你看到它是一个参考。您可以为引用再添加一个常量,它将编译。就像这样:

    const int* const& p
    

    您所拥有的是对指向常量整数的常量指针的引用。

    p
    是对指向常量
    int
    的常量指针的引用

    const int* const fun(const int* const& p) const;
    
    引用本身不是
    const
    ,“const引用”只是对const对象的引用。因此,“const reference to pointer to const int”将被理解为具有相同的含义

    const int*const&p

    p是指向常量整数的常量指针的引用(不是常量引用,因为引用总是常量)

    const int* const fun(const int* const& p) const;
    

    第一个常量是整数,第二个常量是指针(不是引用)。传递常量指针的引用是没有意义的,因为它是常量。

    引用不能被指定为常量,因为可变引用不存在。@Quentin是的,它们不存在,但这也会编译,至少在msvc:)尽管这是不可能的重复