変換関数を用いればカプセル化されたオブジェクトのメンバ変数に格納されているデータを取り出すことができます

intやdoubleなどの変数の型のオーバーロード(多重定義)を実行してみよう オブジェクトにintを作用させることができるようになります

🌞    🌞    🌞    🌞    🌞    🌞    🌞


さあ さらなるC++言語の領域へ


レッツファンタジア!



マックス「今度は どんなファンタジーが登場するんだ?」




🌞    🌞    🌞    🌞    🌞    🌞    🌞



今度のファンタジアンは



intやdoubleなどの変数の型のオーバーロード(多重定義)

   

です


         仕組みは簡単で


例えば 


以下のような



1つの数値データを


コマンドプロンプト画面に表示する機能を持つクラスSuutiとそのメンバ関数suutidisplay()の定義をご覧ください


class Suuti{


public:

int x;

public:


void suutidisplay();


};


void Suuti::suutidisplay() {


cout << x << "\n";

}


このクラスSuutiは


たとえば


aのクラスSuuti型のオブジェクト宣言


Suuti a;


を実行したなら


クラスSuuti型のオブジェクトa


が生成され


そのクラスSuuti型のオブジェクトaのメンバ変数


a.x



数値データ1を代入することができ


その後


クラスSuuti型のオブジェクトaのメンバ関数


a.suutidisplay();


を実行することにより


コマンドプロンプト画面に


クラスSuuti型のオブジェクトaのメンバ変数


a.x



格納された数値データ1を表示することができます


そのプログラムは次のようになります


👇


#include <iostream>


using namespace std;


class Suuti{


public:

int x;

public:


void suutidisplay();


};


void Suuti::suutidisplay() {


cout << x << "\n";

}



int main() {


Suuti a;


a.x = 1;


a.suutidisplay();


return 0;

}


プログラムの実行結果


1


マックス「ずいぶん シンプルなプログラムだな


数値データ1を


クラスSuuti型のオブジェクトaのメンバ変数


a.xに代入して


クラスSuuti型のオブジェクトaのメンバ関数


a.suutidisplay();



実行することにより


1をコマンドプロンプト画面に表示しただけか・・・」


int(イント)「かんたぅ~ん」



🌞    🌞    🌞    🌞    🌞    🌞    🌞


ところで  みなさん


aのクラスSuuti型のオブジェクト宣言


Suuti a;


により


生成されるクラスSuuti型の💖オブジェクトa💖



          変数の型であるintを作用させて


               int a;


なんてことはできるんでしょうか?


🌞    🌞    🌞    🌞    🌞    🌞    🌞


マックス「クラスSuuti型のオブジェクトaに 


intを作用させる・・・?


??  なんだ・・意味が分からんぞ(´▽`*)




??




だが クラスSuuti型のオブジェクトaに 


intを作用させた


int a;


を実行してみたら面白そうだな😊



どんなビルド実行結果が表示されるんだ(´▽`*)」



そのプログラムはこちらです。

👇


#include <iostream>


using namespace std;


class Suuti{


public:

int x;


public:


void suutidisplay();


};


void Suuti::suutidisplay() {


cout << x << "\n";


}



int main() {


Suuti a;


a.x = 1;


a.suutidisplay();


int a;//👈🌞ここにクラスSuuti型のオブジェクトaにintを作用させたint a; を追加しました


return 0;

}



ビルド実行結果


エラー C2371 'a': 再定義されています。異なる基本型です。




ソーラー「😊やっぱり


クラスSuuti型のオブジェクトaにintを作用させるのは無理みたいですね。


しかもこれだと


Suuti a;


int a;



aの異なる変数宣言が行われていることになるね」



🌞    🌞    🌞    🌞    🌞    🌞    🌞



このように普段は実行できない


          💖オブジェクトa💖に


           変数の型intを作用させた


             😊 int a; 😊


が実行できるように


          変数の型intの定義を追加して設定することを 



         変数の型intのオーバーロード(多重定義)といいます



変数の型intのオーバーロードが実行されると



新たな機能が変数の型intに付け加えられるというわけです



そして


          オブジェクトaに変数の型intを作用させた


                int a;


が実行されるとき


どのような命令文が実行されるかは


          自由に設定することができます。



🌞    🌞    🌞    🌞    🌞    🌞    🌞




マックス「むぅぅ


変数の型intのオーバーロードを実行すると


もともと実行できない


オブジェクトaにintを作用させた


int a;


が実行できるようになるんだが


そのとき


どのような命令文が実行されるかは


自分で決めるってことか」



🌞    🌞    🌞    🌞    🌞    🌞    🌞


そのとおり


そして


もともと実行できない


オブジェクトaにintを作用させた


int a;


を実行したとき


+演算子

++演算子


のオーバーロードの時と同様に



        🌞クラスのメンバ関数を設定して🌞



どのような命令文が実行されるかを設定することができます。


🌞    🌞    🌞    🌞    🌞    🌞    🌞



マックス「にゃはははは



オブジェクトに

+演算子

++演算子

を作用させることができるよう

+演算子

++演算子


のオーバーロードを実行してきたが


今度は


オブジェクトに


変数の型int


を作用させることができるよう


変数の型int


のオーバーロードを実行するってわけだ(´▽`*)/



なんでもオーバーロードしてくるってか」








  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る