新しい演算子とC++の新しい演算子の違いは?
C ++では、新しいオブジェクトを作成するときに、メモリにメモリブロックを作成する必要があります。次に、コンストラクタを呼び出してメモリブロックを初期化します。 newキーワードを使用してメモリ要素を作成できます。この新しいオペレーターは、2つの連続したタスクを実行しています。ただし、演算子newは、メモリ空間を作成するだけです。
新しいキーワード
new演算子は特殊なタイプの演算子であり、ヒープセクションでのメモリ割り当ての要求を示します。十分なメモリが利用可能な場合、新しいオペレータのみがメモリをポインタ変数に初期化します。通常のnewkeywordを使用してオブジェクトを作成すると、2つの連続したタスクが実行されます
- ?オブジェクトのメモリブロックをヒープセクションに割り当てます
- ?コンストラクターを呼び出して、メモリブロックを初期化します。
サンプルコード
#include <iostream> using namespace std; class Box { public: Box() { cout << "Constructor called!" <<endl; } }; int main() { Box* myBox = new Box; }
出力
Constructor called!
オペレーター新規
演算子newは関数です。この関数は、new演算子をオーバーロードするために使用されます。これを使用して、rawメモリブロックを割り当てることができます。これは、概念的にはmalloc()またはcalloc()関数に似ています。この関数はコンストラクターを呼び出さないため、メモリは初期化されません。ただし、このオーバーロードされたメソッドからポインターを返した後、コンパイラーはその後コンストラクターを呼び出します。
サンプルコード
#include <iostream> #include <cstdlib> using namespace std; class Box { public: Box() { cout << "Constructor called!" <<endl; } void *operator new(size_t size) { cout << "Call Operator New"<<endl; void *p = malloc(size); return p; } }; int main() { Box* myBox = new Box; }
出力
Call Operator New Constructor called!
-
C ++のドット(。)演算子と->の違いは何ですか?
ドットと矢印の演算子は、どちらもC++でクラスのメンバーにアクセスするために使用されます。それらはさまざまなシナリオで使用されます。 C ++では、class、struct、またはunionとして宣言された型は、「クラス型」と見なされます。したがって、以下は3つすべてを指します。 a.bは、bがオブジェクトのメンバー(またはオブジェクトへの参照[1])である場合にのみ使用されます。したがって、a.bの場合、aは常にクラスの実際のオブジェクト(またはオブジェクトへの参照)になります。 a→bは基本的に(* a).bの省略表記です。つまり、aがオブジェクトへのポインタである場合、a→bはポイ
-
!==と==の違い! PHPの演算子
!==比較演算子 !==演算子は、型チェックを使用して2つのオブジェクトの不等式をチェックします。データ型を変換せず、型付きチェックを行います。たとえば、1!==1の結果はtrueになります。 ==!比較演算子 ==!演算子は2つの演算子の組み合わせであり、==(!operands)と書くことができます。 例 次の例は、「!==」と「==!」の使用法を示しています。演算子。 <!DOCTYPE html> <html> <head> <title>PHP Example</title> </hea