[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 11835] == 演算子 ( 議事録の宿題)



  高橋(智)です。

  先日の読書会の議事録の宿題にもありました、 

> ★リスト19-2 assert("Bob" == e->GetName())の動きは? C++のstringの==演算子の
> オーバライドをヘッダ でどう書いているか

の部分ですが、比較の部分がどうなっているのか、C++Builder6 & STLport でそれぞれ
のケースを見てみました。
  それぞれ比較の == の部分のコードはその下のコメント行に書きました。

-------------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  string std_str("test");
  char* psz_str = "test";

  bool case1 = (std_str==std_str);
  /*
 call _STL::operator ==(const _STL::basic_string<char, _STL::char_traits<char>,
 _STL::allocator<char> > &, const _STL::basic_string<char, _STL::char_traits<ch
 ar>, _STL::allocator<char> > &)
  */

  bool case2 = (std_str==psz_str);
  /*
 call _STL::operator ==(const _STL::basic_string<char, _STL::char_traits<char>,
 _STL::allocator<char> > &, const char *)
  */

  bool case3 = (psz_str==std_str);
  /*
 call _STL::operator ==(const char *, const _STL::basic_string<char, _STL::cha
 r_traits<char>, _STL::allocator<char> > &)
  */

  bool case4 = (psz_str==psz_str);
  /*
  mov ecx, [ebp-0x50]
  cmp ecx, [ebp-0x50]
  */
}
-------------------------------------------------------------------------------


-- 
高橋智宏