C++での配列インデックス演算子[]のオーバーロード
演算子のオーバーロードは、オブジェクト指向プログラミング言語の機能において重要な役割を果たします。演算子のオーバーロードは、コンパイル時または静的ポリモーフィズムの一種です。
アルゴリズム
Begin Create a class Arr and declare size of array. Inside the class, initialize all the elements by using for loop. Print the all elements. End.
サンプルコード
#include <iostream> #include <stdlib.h> using namespace std; const int M = 7; class Arr { private: int A[M]; int size; public: Arr(int s, int v) { if(s>M) { cout<<endl<<"This is beyond maximum size"; exit(1); } size = s; for(int i=0;i<size;i++) A[i] = v; } int& operator[](int i) { if( (i<0) || (i>=size) ) { cout<<endl<<"Error: Array out of bound"; exit(1); } return A[i]; } }; int main() { int i=0; Arr a(7,0); for(i=0;i<7;i++) a[i] = i*10; cout<<"Array elements are:"<<endl; for(i=0;i<7;i++) { int val = a[i]; cout<<val<<endl; } return 0; }
出力
Array elements are: 0 10 20 30 40 50 60
-
配列をC++関数に渡す
C ++では、配列全体を引数として関数に渡すことはできません。ただし、インデックスなしで配列の名前を指定することにより、配列へのポインタを渡すことができます。 1次元配列を関数の引数として渡したい場合は、次の3つの方法のいずれかで関数の仮パラメーターを宣言する必要があります。3つの宣言メソッドはすべて、整数ポインターが実行されることをコンパイラーに通知するため、同様の結果を生成します。受け取る必要があります。 配列を関数に渡す方法は3つあります- ポインタとしての正式なパラメータ void myFunction(int *param) { // Do so
-
C ++で単項演算子をオーバーロードしますか?
operatorキーワードは、クラスのインスタンスに適用されたときにoperator-symbolが何を意味するかを指定する関数を宣言します。これにより、演算子に複数の意味が与えられるか、「オーバーロード」されます。コンパイラーは、オペランドのタイプを調べることにより、演算子のさまざまな意味を区別します。 単項演算子は単一のオペランドで動作し、以下は単項演算子の例です- インクリメント(++)およびデクリメント(-)演算子。 単項マイナス(-)演算子。 論理否定(!)演算子。 単項演算子は、呼び出されたオブジェクトを操作します。通常、この演算子は、!obj、-obj、および++ obj