演算子のオーバーロードはクラス型のオブジェクト同士を足したり引いたりするような演算を定義するために用いられます。

🌞   🌞   🌞   🌞   🌞   🌞   🌞


そうなんです


+演算子には


1+1;


のように


数値データを足し合わせる機能や


a+b;


のように


変数aや変数b


を足し合わせる機能が


あるのですが



          p1+p2; 


のように


         💖クラスPoint型の💖 


オブジェクトp1とオブジェクトp2を足し合わせる機能

    

はないのです。


新発見だね。


🌞   🌞   🌞   🌞   🌞   🌞   🌞


マックス「あ、わかああた💖


クラスPoint型っていうのがポイントなんだろう。


+演算子を用いて


数値データや変数同士の足し算をすることはできても


クラス型のオブジェクト同士を


足し合わせることはできないってわけだ。」


てんC「つまりは


クラス型のオブジェクト同士を


足し合わせることにより


オブジェクトのメンバ変数同士を


足し合わせることはできないというわけですね。」


ソーラー「そ~なのか」




🌞   🌞   🌞   🌞   🌞   🌞   🌞



そこで登場するのが


       

     『演算子のオーバーロード』



のシステムなんです


C++言語に新たに追加された便利な機能なんだよ。


    


     『演算子のオーバーロード』


このシステムは


  『演算子の定義を複数設定することができる』


というものなんです。


          どう😊


        すごいでしょ?                  


🌞   🌞   🌞   🌞   🌞   🌞   🌞



マックス「はい?」


ソーラー「? 


『演算子の定義を複数設定することができる』


とは


どういうことになってるのかな?」



🌞   🌞   🌞   🌞   🌞   🌞   🌞


例えば


先ほどの例でいえば


+演算子には


1+1;


のように


数値データを足し合わせる機能や


a+b;


のように


変数aや変数b


を足し合わせる機能が


あるのですが



          p1+p2; 


のように


         💖クラスPoint型の💖 


オブジェクトp1とオブジェクトp2を足し合わせる機能

    

はないのです。


そこで


+演算子には


1+1;


のように


数値データを足し合わせる機能や


a+b;


のように


変数aや変数b


を足し合わせる機能が


あるのですが



     『演算子のオーバーロード』



のシステムを用いれば


          +演算子に


        

         🌞さらに🌞



           p1+p2; 


のように


      💖クラスPoint型の💖 


オブジェクトp1とオブジェクトp2を足し合わせる機能

    


追加することができるんです。」


マックス「え~~


よくわからんが


+演算子の機能を追加することができるのが



      『演算子のオーバーロード』



のシステムなのか?」


int (イント)「ということは


+演算子に元から備わっている


1+1;


のように


数値データを足し合わせる機能や


a+b;


のように


変数aや変数b


を足し合わせる機能は消えないってことなのかな?」



🌞   🌞   🌞   🌞   🌞   🌞   🌞


そうなんです。


+演算子に元から備わっている


1+1;


のように


数値データを足し合わせる機能や


a+b;


のように


変数aや変数b


を足し合わせる機能は消えないんです。


安心のシステムです


正確には


クラス型のオブジェクト宣言を行い


クラス型のオブジェクトを生成し


      

       💖クラス型のオブジェクト同士💖



の足し算がおこなわれるときだけ



           +演算子



の働きを変更することができるんです。


なぜなら


        『演算子のオーバーロード』


のシステムは


        💖クラス型のオブジェクト同士💖



             💖直接💖


足し合わせたり


引いたりすることにより


クラス型のオブジェクトのメンバ変数同士を足し合わせたり


クラス型のオブジェクトのメンバ変数同士を引いたり


するために


作られたシステムだからです。


ですから


クラス型のオブジェクトが生成されていない状態では


+演算子は


1+1;


のように


数値を足し合わせる機能や


a+b;


のように


変数aや変数b


を足し合わせる機能しかもっていません。


🌞   🌞   🌞   🌞   🌞   🌞   🌞


ソーラー「??


じゃあ


クラスPoint型のオブジェクトが生成されたなら


その瞬間に


+演算子は


          p1+p2; 


のように


      💖クラスPoint型の💖 


オブジェクトp1とオブジェクトp2を足し合わせる機能



もつことになるのかな?



🌞   🌞   🌞   🌞   🌞   🌞   🌞


そう思う・・・かな?


ちょっと微妙にちがうかも・・・


正確には


オブジェクトに


+演算子を


          p1+p2; 


のように


作用させるときだけ


+演算子は


          p1+p2; 


のように


      💖クラスPoint型の💖 


オブジェクトp1とオブジェクトp2を足し合わせる機能



もつことになるんだよ


🌞   🌞   🌞   🌞   🌞   🌞   🌞



マックス「ということは


クラス型のオブジェクトが関係してこない


普通に


1+1;

a+b;


を実行するときは


+演算子に元から備わっている


数値データや変数同士を足し合わせる機能がはたらくわけだ。」



🌞   🌞   🌞   🌞   🌞   🌞   🌞


そう


次のエピソードで



       『演算子のオーバーロード』



の仕組みを


詳しくみていこうよ。


🌞   🌞   🌞   🌞   🌞   🌞   🌞


   

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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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