自定义 class 的 const 实例化是否也使 class 中的*所有*都成为常量?
Does a const instantiation of a custom class make *everything* in the class constant too?
- 大多数编译器实际上是如何处理 const 的?这在技术上意味着什么? (不实际)
当我说 everything 我的意思是,假设我有一个自定义的 class,其中一个容器作为成员字段,然后是一个通过引用值传递的函数,将它们附加到该成员字段中。
如果我有这个 class 的 const 实例化,常数会过滤掉吗?
如果我有一个非 const 容器的 const STL 迭代器(我的 sharedPointers 到我的自定义 class 的实例化),const 到底是什么?我可以使用上述功能更改容器的内容吗?指向的数据是可变的吗?
本网站题外话。
如果我有这个 class 的 const 实例化,常数会过滤掉吗? 是的。
如果我有一个非 const 容器的 const STL 迭代器。 如果 const iterator
那么你不能递增或递减迭代器,但是你可以用它来修改它的所指对象。如果 const_iterator
那么你可以递增或递减它,但你不能用它来修改它的所指对象。在任何一种情况下,容器的其他非常量迭代器也可能存在,因此容器可能会被它们修改。
- 大多数编译器实际上是如何处理 const 的?这在技术上意味着什么? (不实际)
当我说 everything 我的意思是,假设我有一个自定义的 class,其中一个容器作为成员字段,然后是一个通过引用值传递的函数,将它们附加到该成员字段中。
如果我有这个 class 的 const 实例化,常数会过滤掉吗?
如果我有一个非 const 容器的 const STL 迭代器(我的 sharedPointers 到我的自定义 class 的实例化),const 到底是什么?我可以使用上述功能更改容器的内容吗?指向的数据是可变的吗?
本网站题外话。
如果我有这个 class 的 const 实例化,常数会过滤掉吗? 是的。
如果我有一个非 const 容器的 const STL 迭代器。 如果
const iterator
那么你不能递增或递减迭代器,但是你可以用它来修改它的所指对象。如果const_iterator
那么你可以递增或递减它,但你不能用它来修改它的所指对象。在任何一种情况下,容器的其他非常量迭代器也可能存在,因此容器可能会被它们修改。