メモ--演算子


2演算子~~~~~~~~~~2.1慎重にタイプ変換関数を定義する=====================1.コンパイラに暗黙的なタイプ変換を許可する2つの関数があります.*単一パラメータコンストラクション関数(最初のパラメータを除いて、すべてのパラメータにデフォルト値があります)*暗黙的なタイプ変換演算子暗黙的なタイプ変換演算子は、operatorキーとタイプ記号の奇妙なメンバー関数にすぎません.関数の戻りタイプを定義する必要はありません.戻りタイプがこの関数の名前だからです.   2. explicitキーワードは、暗黙的なタイプ変換を拒否してコンストラクション関数を呼び出すだけです.明示的なタイプ変換は依然として合法的です.   3. 暗黙型変換は一度しか変換されません.つまり、AからBへ、Cへの変換はありません.

  
  
  
  
  1. struct B 
  2.     B(int){}; 
  3. }; 
  4. struct D2 
  5.     D2(B ){}; 
  6. }; 
  7. void test(D2) 
  8.     cout<<"D2 created"<<endl; 
  9. int main() 
  10.     test(1);  // , int->B->D2 

2.2自己増加と自己減少operatorの前置と後置を区別する形式===============================1.前置operatorはパラメータを持たず、後置operatorはintパラメータを持ち、呼び出し時にコンパイラは自動的に0 2を割り当てる.前置はreferenceを返し、後置はconstオブジェクトを返す(主にi+++がコンパイルできることを防止し、iは1回だけ増加し、論理的ではない).後置式operatorの実現は、以前置式operatorをベースにすべきである.2.3決して再ロードしないでください&&&,|と,オペレータ(あなたは永遠にそれらをシミュレートできないため)=======================================C++対&&&|「急死式」の評価方式を採用.しかし、これらの演算子を再定義すると、関数呼び出しの意味が「急死的意味」に置き換えられます.「関数呼び出しの意味」は、すべてのパラメータを評価する必要があり、各パラメータの評価の順序が不明であることを意味します.C++のペアは、カンマの左側が評価され、カンマの右側が評価され、最後にカンマ式全体の結果がカンマの右側の値で表されます.2.4異なる意味のnewとdelete============================1.new operator(new式とも呼ばれる)とoperator newは異なるA*a=new A()で、ここのnewはnew operatorで、C++内蔵で、意味を変えることはできません(再ロードできません)、常に十分なメモリを割り当ててからコンストラクション関数の初期化メモリのオブジェクトを呼び出します.新operatorはoperator newを呼び出して第1部分のメモリの割り当てステップを完了し、operator newを再ロードすることができる.new operatorを呼び出して配列を割り当てる場合、operator newを呼び出してメモリを割り当てるのではなく、operator new[]を呼び出してメモリ3を割り当てる.Operator newは通常void*operator new(size_t size)と宣言される.関数はメモリを初期化していないポインタを返すためvoid*を返します.追加のパラメータリロード関数operator newを追加できますが、最初のパラメータタイプはsize_でなければなりません.t    4. delete operatorとoperator deleteも似たような違いがあります.