成员函数末尾的 const 是什么意思?

What is the meaning of a const at end of a member function?(成员函数末尾的 const 是什么意思?)
本文介绍了成员函数末尾的 const 是什么意思?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

C++ 中的 const 关键字写在成员函数的末尾(参数列表之后)究竟是什么意思?

What exactly does the const keyword in C++ mean when it's written at the end of a member function (after the argument list)?

推荐答案

这意味着 *this 是该成员函数内部的 const ,即它不会改变对象.

It means that *this is const inside that member function, i.e. it doesn't alter the object.

关键字this 是prvalue 表达式,其值是调用函数的对象的地址.X 类的成员函数中this 的类型是X*.如果成员函数声明为const,则this 的类型为const X*.[第 9.3.2 节 §1]

The keyword this is a prvalue expression whose value is the address of the object for which the function is called. The type of this in a member function of a class X is X*. If the member function is declared const, the type of this is const X*. [section 9.3.2 §1]

在一个const成员函数中,调用该函数的对象是通过一个const访问路径访问的;因此,const 成员函数不得修改对象及其非静态数据成员.[第 9.3.2 节 §2]

In a const member function, the object for which the function is called is accessed through a const access path; therefore, a const member function shall not modify the object and its non-static data members. [section 9.3.2 §2]

这意味着可以在类的 const 实例上调用 const 成员函数.不能在 [1]const 对象上调用非 const 成员函数,因为它可能会尝试修改它.

This means that a const member function can be called on a const instance of the class. A non-const member function can't be called on [1]a const object, since it could potentially try to modify it.

<支持>[1] 注意:临时不是 const 对象,除非它是 const 类型.

[1] Note: a temporary is not a const object unless it's of const type.

这篇关于成员函数末尾的 const 是什么意思?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Rising edge interrupt triggering multiple times on STM32 Nucleo(在STM32 Nucleo上多次触发上升沿中断)
How to use va_list correctly in a sequence of wrapper functions calls?(如何在一系列包装函数调用中正确使用 va_list?)
OpenGL Perspective Projection Clipping Polygon with Vertex Outside Frustum = Wrong texture mapping?(OpenGL透视投影裁剪多边形,顶点在视锥外=错误的纹理映射?)
How does one properly deserialize a byte array back into an object in C++?(如何正确地将字节数组反序列化回 C++ 中的对象?)
What free tiniest flash file system could you advice for embedded system?(您可以为嵌入式系统推荐什么免费的最小闪存文件系统?)
Volatile member variables vs. volatile object?(易失性成员变量与易失性对象?)