我的指针导致"同一类型限定符不止一次使用"警告?

oph*_*coe 0 c++ pointers const

根据我对使用const类型限定符和指针的理解,它取决于你使用它的位置.

const MyType *
Run Code Online (Sandbox Code Playgroud)

意味着该位置无法修改,但该位置的值可以.

MyType const *
Run Code Online (Sandbox Code Playgroud)

意味着可以修改位置,但不能修改位置的值.

由此,我认为没有理由不能使以下内容无效,

const MyType const *
Run Code Online (Sandbox Code Playgroud)

定义一个位置固定的指针,并且无法修改指向的值.但是,这就是"不止一次使用相同类型的限定符".我应该忽略这个吗?我对指针上下文中const语义的理解是否有缺陷?

Sme*_*eey 5

你有点误解了语法.事实上

const MyType *
Run Code Online (Sandbox Code Playgroud)

MyType const *
Run Code Online (Sandbox Code Playgroud)

意思相同:底层MyType对象是不变的.使指针本身不变的语法是:

MyType * const
Run Code Online (Sandbox Code Playgroud)

因此,如果你想要两者都是常数,你会使用:

MyType const * const
Run Code Online (Sandbox Code Playgroud)

要么:

const MyType * const
Run Code Online (Sandbox Code Playgroud)

一种记住这个的方法是:常量是关键字左边的东西const(*指针或MyType对象),除非左边没有任何内容:在这种情况下它是对.