在c++中,将别名设置为const
In C++, make an alias const
我是c++的初学者,我有一个问题,我想确定…我在网上搜索了很多。
假设我有一个类调用a,它有一个名为function的函数。函数如下所示:
// this is pseudocode
void Afunction (const A& a)
{
a.something = a.something +1;
}
我的理解是我们有一个"类似指针"的东西叫做"a",它是我们传入的任何东西的别名。这里我们只确保别名本身是const,但不保证它所指向的值不会被改变。事实上,我正在更改它,而且我没有得到任何错误。
所以我的问题是,我怎么能确保的值,别名是指向不能改变?如果它是指针而不是别名,那就容易多了。
如果编译器接受该代码,您应该立即丢弃它。
不能修改a
A const&
(不幸的是等同于const A&
)是对const
对象的引用。
A const*
是指向const
对象的指针,而A * const
是指向对象的 const
指针,A const * const
是指向const
对象的* const
指针。
关键是要从右向左读(和写)类型声明。 这完全取决于something
是什么。
如果你发布了A类的代码,就更容易解释为什么你可以改变something
。
一般来说,你不能修改const A&
的内容。但是…
-
something
可以是静态的,那么const无关紧要,因为something
在技术上不属于Afunction
中的a
变量。 -
something
可以声明为mutable
。有时,即使对象是const,使用一个可以更改的成员变量也是有益的。例如引用计数。 -
something
可能是完全不同的东西,具有奇怪的语义。(正如Zyx 2000指出的那样)。
相关文章:
- 在类 (C++) 之外设置 const int 成员变量
- 当设置为 const 变量时使用 nullptr
- PIMPL类的设置应该是const成员函数
- 如何使用设置运算符返回非 const 对象>
- 为什么设置const变量(将以相同的值存储)会导致不同的结果
- 如何使用const成员变量设置数组大小
- const_cast为函数const设置规则并破坏规则
- 尝试在类中设置对 const 引用成员的引用
- 为什么在设置类成员时会自动从 const 转换为 non-const 并发生?
- 如何在 const 方法上设置EXPECT_CALL
- 如何在C++中将 const int 设置为最大值
- 从子类设置const成员值
- 构造函数"const variables"设置的用于表示C++数组的边界?
- 定义需要在运行时设置的const静态
- C++ 映射/设置迭代器不可取消引用 --- map<const char *,字符串>
- 为某些函数设置类的一些私有成员为const
- 未将此指针设置为const的构造函数会导致未检测到的问题
- 为什么设置const char*会出现分割错误?
- 如何在c++类的构造中设置const成员变量
- 在c++中,将别名设置为const