簡體   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