もう1つオブジェクト同士の足し算p1+p2;を可能にする+演算子のオーバーロードを実行する方法が存在します その方法ではクラスのメンバ関数でない普通の自作関数operator+を作製することになります

🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞


             

                もう


       Point型のオブジェクト同士の足し算


                p1+p2;



を実行する方法はわかったかな?」


🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞




マックス「+演算子に新たな機能を追加する


+演算子のオーバーロードを実行



つまり



operaor+関数のクラスPointのメンバ関数宣言


Point operator+ (Point p);


を実行し


クラスPointのメンバ関数operator+の定義

👇

Point Point::operator+(Point p){


Point a;


a.x = x + p.x;

a.y = y + p.y;


return a;

}


を実行しておけば



main関数内で



                p1+p2;

 

すなわち


             p1.operator+(p2);



が実行されると


クラスPointのメンバ関数operator+の定義内の


Point a;


a.x = x + p.x;

a.y = y + p.y;


return a;



⭐️ ⭐️ ⭐️

x

y


クラスPoint型のオブジェクトp1のメンバ変数

p1.x

p1.y

⭐️ ⭐️ ⭐️



🌙 🌙 🌙

p.x

p.y



クラスPoint型のオブジェクトp2のメンバ変数

p2.x

p2.y

🌙 🌙 🌙



が代入された


Point a;


a.x = p1.x + p2.x;

a.y = p1.y + p2.y;


return a;


が実行される



Point a;


の実行により


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


a.x = p1.x + p2.x;

a.y = p1.y + p2.y;


の実行により


クラスPoint型のオブジェクトp1のメンバ変数

p1.x

p1.y


クラスPoint型のオブジェクトp2のメンバ変数

p2.x

p2.y


同士の足し算


p1.x+p2.x

p1.y+p2.y


が実行されるんだろう


そして


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


a.x

a.y


p1.x+p2.x

p1.y+p2.y


が代入される。


そして


return a;


により


             p1.operator+(p2)



戻り値としてクラスPoint型のオブジェクトa


が返されるというわけだ。



すなわち


           p1.operator+(p2)すなわちp1+p2



戻り値としてクラスPoint型のオブジェクトa


が返されるというわけだ。


なので


p1+p2=a;


のような状態になる


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


a.x

a.y


p1.x+p2.x

p1.y+p2.y


が代入されているので


クラスPoint型のオブジェクト


p1+p2のメンバ変数(p1+p2).x

p1+p2のメンバ変数(p1+p2).y


p1.x+p2.x

p1.y+p2.y


を表すことになる


結局


クラスPoint型のオブジェクト同士の足し算


p1+p2;


を実行すると


クラスPoint型のオブジェクト


p1+p2のメンバ変数(p1+p2).x

p1+p2のメンバ変数(p1+p2).y



p1.x+p2.x

p1.y+p2.y


を表すことになる


クラスPoint型のオブジェクト同士の足し算


p1+p2;


が実行できたというわけだ」



ソーラー「これで オブジェクト同士の足し算


p1+p2;


を可能にする


+演算子のオーバーロードの解説は終わりってわけだね」


てんC「ひと段落ですね」





🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞




             実は



🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞



マックス「❔実は」



🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞



      +演算子のオーバーロードのお話はおわりませ~ん


               今の方法以外に


       +演算子の機能を追加する(オーバーロードを行う)方法があるんです


🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞



マックス「なにぃぃ」

             


🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞


今の方法では



       クラスPointのメンバ関数operator+を作製することにより


+演算子の機能を追加する


+演算子のオーバーロードを実行しました。



       それとは別に



      クラスPointのメンバ関数でない


      普通の自作関数operator+を作製することにより


+演算子の機能を追加する


+演算子のオーバーロードを実行することができます。


🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞



マックス「なんでぇぇぇ


っていうか  ど~いうことぉ?」



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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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