代码之家  ›  专栏  ›  技术社区  ›  Naruto

如果x是类,那么“const x a”和“x const a”之间的区别是什么?

  •  3
  • Naruto  · 技术社区  · 14 年前

    我有一个类名x,“const x a”和“x const a”有什么区别?

    3 回复  |  直到 7 年前
        1
  •  13
  •   James McNellis    14 年前

    没有什么。

    const 限定符适用于其左边的任何内容。如果它的左边没有任何东西,那么它就适用于它右边的任何东西。

        2
  •  6
  •   Jerry Coffin    14 年前

    在这种情况下,根本没有区别。

    当您有一个指针或引用时,一个可能 几乎相同 但意义重大。给出如下信息:

    T * a;
    

    位置 const (或) volatile )相对于星号 意义重大:

    T const * a;
    T * const a;
    

    第一个说 a 是指向 const T (即,您不能修改 指的是)第二个说 是指向(非常量)t的常量点——也就是说,可以修改 但不能修改指针本身,因此不能将其指向其他对象。当然,您也可以同时执行以下两项操作:

    T const * const a;
    

    这意味着您不能更改指针本身 这个 T 它引用的对象。

        3
  •  2
  •   Paul E.    14 年前

    如果你使用简单的类型(嵌入式或定制),那么这是一个品味问题。

    在使用指针的情况下,有一个简单的一般规则:如果常量放在“*”之前,则指向的数据是常量,否则指针本身是常量,则不能更改其值。

    例如:

    const int  a=1;  // 'a' value can't be changed
    const int* q;    // the data that 'a' point to is constant
    int const* q;    // the same
    int* const p=&a; // the pointer is constant: const is behind '*'
    

    所以

    int b=2;
    p = &b; // error: trying to change constant pointer