我有一个关于const函数的问题:const函数可以在函数中的本地对象上调用非const函数吗?以下是我所谈论的一个例子:
template <class T>
Set<T> Set<T>::setUnion (const Set<T> & other) const
{
Set<T> unionSet; //create union set
unionSet.merge(internalStorage); //merge it with our current set
unionSet.merge(other.internalStorage); //merge it with other set, duplicates will not be added
return unionSet;
}
此函数采用两个集合并返回集合的并集。问题是合并函数不是const而且merge函数也调用add函数也不是const,所以我看不到任何其他方法来创建只有这两个函数的联合集,因为setUnion函数必须是const。
PS:我知道没有做const函数的解决方案,我这样做的原因是因为我的教授这样定义它。感谢。
答案 0 :(得分:1)
是。对const
成员函数的唯一限制是它不能修改它所调用的对象;它可以修改任何其他(非const)对象。
答案 1 :(得分:1)
const
成员函数意味着它收到的this
类型大致相当于T const *const this
1 。
这意味着您无法通过this
调用任何非常量函数,但不会影响您执行的任何操作没有<{1}}(明确地或隐含地)通过
1.从技术上讲,你不能真正正确地写出this
的类型,但是我在这里给出的类型足够接近当前的讨论。
功能