Chinaunix

标题: 两个TOP构成重载吗? [打印本页]

作者: lc1999    时间: 2008-01-23 00:32
标题: 两个TOP构成重载吗?
#include <stack>
template <class T, class Container = deque<T> >
class stack
{
public:
  // Constructor
  explicit stack(const Container& c = Container());
  bool empty() const;
  size_type size() const;
value_type& top();
const value_type& top() const;  
void push(const value_type& t);
  void pop();
};


问一下, 上面的两个TOP构成重载吗?

谢谢。
作者: namtso    时间: 2008-01-23 14:36
不。因为参数都一样。
作者: emacsnw    时间: 2008-01-23 15:28
原帖由 namtso 于 2008-1-22 22:36 发表
不。因为参数都一样。


不要误导啊。
作者: gothicane    时间: 2008-01-23 18:34
算是C++的重载吧
作者: langue    时间: 2008-01-23 19:44
The return types can be the same or different on overloaded functions. You should note that two functions with the same name and parameter list, but different return types, generate a compiler error.


被重载函数的返回类型可以相同也可以不同。需注意的是,假如两个函数的名称与参数列表均一致然而返回类型不同的话,这就是个编译错误。

可以知道,在这里的这两个函数既不属于重载也不属于重置,而是错误的写法。

详见:http://newdata.box.sk/bx/c/htm/ch05.htm#Heading36
作者: lc1999    时间: 2008-01-23 21:54
原帖由 langue 于 2008-1-23 19:44 发表


被重载函数的返回类型可以相同也可以不同。需注意的是,假如两个函数的名称与参数列表均一致然而返回类型不同的话,这就是个编译错误。

可以知道,在这里的这两个函数既不属于重载也不属于重置,而是错误 ...



谢谢版主回复。

不过版主可能没有看清: 两个函数一个是const, 一个是non const, 所以是overload。
作者: langue    时间: 2008-01-23 23:00
原帖由 lc1999 于 2008-1-23 21:54 发表



谢谢版主回复。

不过版主可能没有看清: 两个函数一个是const, 一个是non const, 所以是overload。


谢谢你的提醒。我确实没有注意后面那个 const。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2