繁体   English   中英

关于C ++标准库的堆栈展示的一个快速问题

[英]A quick question on stack impl of C++ standard library

这行是什么:

template<typename _Tp1, typename _Seq1>
friend bool
operator==(const stack<_Tp1, _Seq1>&, const stack<_Tp1, _Seq1>&);

http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.4/a01367.html中

做?

为什么_Tp1在争论列表中重复两次? 谢谢,

这就像问为什么:

int strcmp( const char * a, const char * b );

const char *重复两次-有两件事需要比较。 _Tp1模板参数是存储在堆栈中的事物的类型-被比较的两个堆栈必须存储相同的类型。

请注意,阅读标准库源不是学习C ++的好方法-你需要一本好书,比如这一个

它在该类的两个stack 朋友函数之间声明相等运算符,这对于访问私有成员是必需的。

const stack<_Tp1, _Seq1>出现两次,因为有2个参数。

当然可以写成

bool operator==(const stack<_Tp1, _Seq1>& y) const { return c == y.c; }

但是C ++标准(§[stack.ops](23.3.5.3.4))似乎要求此运算符为自由函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM