3 回答
TA贡献1793条经验 获得超6个赞
如果将其重写为完全等效的内容,会更容易理解
// 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)的指针)。
TA贡献1856条经验 获得超5个赞
首先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()
。
- 3 回答
- 0 关注
- 410 浏览
添加回答
举报