讨论下:顺序栈中top()函数的是否应该重载个const函数?

紫色动力 2014-12-07 11:11:04
在顺序栈的公有函数中的TOP函数是否需要这样:
T& Top();
const T& Top() const;

我觉得是不需要这样的,因为栈只不会改栈中的内容。在vector等容器的下标重载操作符函数:
T& operator[](int index);
const T& operator[](int index) const;
是需要两个都有了,因为vector窗口可以存储常量。而栈中的Top()函数只是查看栈顶的内容,并不会修改,所以不是把Top写成重载函数,只写成const函数就行了,如下:
T& Top() const;
这样就行了,不知我的想法是否正确,请大家看下,谢谢!~
...全文
315 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫色动力 2014-12-15
  • 打赏
  • 举报
回复
引用 5 楼 Jinhao 的回复:
vector的能修改,stack的一样能修改. >>T& Top() const; 如果改成这样,就出麻烦了
好的,明白了。
Jinhao 2014-12-08
  • 打赏
  • 举报
回复
vector的能修改,stack的一样能修改. >>T& Top() const; 如果改成这样,就出麻烦了
fly_dragon_fly 2014-12-07
  • 打赏
  • 举报
回复
返回引用, 函数为const,有点矛盾了 如果我要做 stack.top() = (T) t, 这种操作怎么办
紫色动力 2014-12-07
  • 打赏
  • 举报
回复
这样理解对吗?
紫色动力 2014-12-07
  • 打赏
  • 举报
回复

以上是VS2013的STL中的stack中的代码。
写了两个函数。看来stack栈中的元素是要修改的。我原以为栈中的元素是不允许修改了。
紫色动力 2014-12-07
  • 打赏
  • 举报
回复
引用 1 楼 fly_dragon_fly 的回复:
返回引用, 函数为const,有点矛盾了 如果我要做 stack.top() = (T) t, 这种操作怎么办
你这是要把栈顶初始化为T类型的默认?

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧