[英]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.