C ++常量用法说明

const int* const Method3(const int* const&) const;

有人可以解释每个const的用法吗?


慕慕森
浏览 411回答 3
3回答

摇曳的蔷薇

如果将其重写为完全等效的内容,会更容易理解// v───v───v───v───v───v───v───v───v───v───v───v─┬┐//                                               ││//  v──#1    v─#2             v──#3    v─#4      #5   int const * const Method3(int const * const&) const;然后从右到左阅读。#5表示左侧的整个函数声明为const,这表示这一定是成员函数,而不是自由函数。#4表示左边的指针是const(不能更改为指向其他地址)。#3表示int左侧的是const(不得更改为其他值)。#2表示左侧的指针是const。#1表示int的左侧是const。放在一起,您可以将其作为const名为的成员函数读取,该成员函数Method3引用指向的const指针int const(const int如果需要,可以引用,然后返回const指向int const(const int)的指针)。

RISEBY

首先const T等于T const。const int* const因此等于int const * const。读取其中包含许多const标记和指针的表达式时,请始终尝试从右到左读取它们(应用上面的转换之后)。因此,在这种情况下,返回值是指向constint的const指针。在const这里,使指针本身没有意义,因为返回值不是可以修改的左值。const但是,指定为pointee 可以确保调用方不会修改所返回的int(或的数组int)Method3。const int*const&成为int const*const&,因此它是对指向const的const指针int的引用。通过引用传递const指针也没有任何意义-您不能修改引用的值,因为指针为,const并且引用和指针占用相等的存储空间,因此也没有任何空间节省。最后一个const表示该方法未修改该this对象。this方法主体中的指针将具有(理论上的)声明T const * const this。这意味着一个const T*对象将能够调用T::Method3()。
打开App,查看更多内容
随时随地看视频慕课网APP