C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++を使用して独自のsizeof演算子を実装する


独自のsizeof()演算子を実装できるオプションがあります。演算子sizeof()は単項演算子であり、任意のタイプのデータのサイズを計算するために使用されます。 #defineディレクティブを使用して、sizeof()演算子とまったく同じように機能する独自のsizeof()演算子を実装できます。

独自のsizeof()演算子を実装するための構文は次のとおりです

#define Any_name(object) (char *)(&object+1) - (char *)(&object)

ここで

Any_name −独自のsizeof()演算子に付ける名前。

これは、C言語でsizeof()演算子を実装する例です。

#include <stdio.h>
#define to_find_size(object) (char *)(&object+1) - (char *)(&object)
int main() {
   int x;
   char a[50];
   printf("Integer size : %d\n", to_find_size(x));
   printf("Character size : %d\n", to_find_size(a));
   return 0;
}

出力

Integer size : 4
Character size : 50

上記のプログラムでは、#defineディレクティブを使用して独自のsizeof()演算子を宣言し、整数と文字型の配列のサイズを計算しています。

#define to_find_size(object) (char *)(&object+1) - (char *)(&object)
….
int x;
char a[50];
printf("Integer size : %d\n", to_find_size(x));
printf("Character size : %d\n", to_find_size(a));

  1. sizeof()がC ++の演算子として実装されているのはなぜですか?

    sizeofはC++の実際の演算子ではありません。引数のサイズに等しい継続を挿入するのは、単なる特別な構文です。 sizeofは、ランタイムをサポートしていないか、サポートしていません。ポインタを配列にインクリメントするなどの組み込み操作は暗黙的にそれに依存するため、Sizeofをオーバーロードすることはできません。 C標準では、sizeofを演算子として実装する必要があると指定されています。ほとんどのコンパイラでは、sizeofの値は、コンパイル時自体に等しい定数に置き換えられます。 例 #include <iostream> using namespace std; int

  2. C ++のsizeof演算子とは何ですか?

    sizeofはキーワードですが、変数またはデータ型のサイズをバイト単位で決定するコンパイル時の演算子です。 sizeof演算子を使用して、クラス、構造体、共用体、およびその他のユーザー定義のデータ型のサイズを取得できます。 sizeofを使用する構文は次のとおりです- sizeof (data type) ここで、データ型は、クラス、構造体、共用体、およびその他のユーザー定義のデータ型を含む、目的のデータ型です。 sizeof演算子をchar型のオブジェクトに適用すると、1が得られます。sizeof演算子を配列に適用すると、配列IDで表されるポインターのサイズではなく、その配列の合計バイト数が