当前位置:  开发笔记 > 编程语言 > 正文

在C++中使用const重载有什么用?

如何解决《在C++中使用const重载有什么用?》经验,为你挑选了4个好方法。

在C++中,函数的签名部分取决于它是否为const.这意味着一个类可以有两个具有相同签名的成员函数,除了一个是const而另一个不是.如果你有这样的类,那么编译器将根据你调用它的对象来决定调用哪个函数:如果它是类的const实例,那么将调用函数的const版本; 如果对象不是const,则将调用另一个版本.

您希望在什么情况下利用此功能?



1> Dima..:

当成员函数返回指针或对类的数据成员(或成员的成员,成员的成员,...等)的引用时,这才有意义.通常返回非常量指针或对数据成员的引用是不受欢迎的,但有时它是合理的,或者只是非常方便(例如[]运算符).在这种情况下,您提供了getter的const和非const版本.这样决定是否可以修改对象取决于使用它的函数,它可以选择声明const或非const.



2> Bill the Liz..:

它就在那里你可以使编译器强制执行是返回const对象还是常规对象,并且仍然保持相同的方法签名.Const Correctness有一个深入的解释.



3> Jasper Bekke..:

您可能希望使用它来决定是否将const引用返回给对象.STL的容器使用const重载的begin()和end()函数来决定是返回const_iterator还是正常的迭代器.



4> RobH..:

看一下std :: map :: operator []的行为。如果您尝试引用无效的密钥,则const版本会引发错误,但非const版本会插入。插入行为比必须使用std :: map :: insert更为方便(而且还会进行覆盖),但不适用于const映射。

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有