const函数可以在本地对象上调用非const函数吗?

时间:2014-09-26 21:16:18

标签: c++ memory const

我有一个关于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函数的解决方案,我这样做的原因是因为我的教授这样定义它。感谢。

2 个答案:

答案 0 :(得分:1)

是。对const成员函数的唯一限制是它不能修改它所调用的对象;它可以修改任何其他(非const)对象。

答案 1 :(得分:1)

const成员函数意味着它收到的this类型大致相当于T const *const this 1

这意味着您无法通过this 调用任何非常量函数,但会影响您执行的任何操作没有<{1}}(明确地或隐含地)通过


1.从技术上讲,你不能真正正确地写出this的类型,但是我在这里给出的类型足够接近当前的讨论。 功能