『演算子のオーバーロード』 は そのクラスごとに個別に設定されるというわけですね。

🌞   🌞   🌞   🌞   🌞   🌞   🌞


        

         では!



いきま~す。\(^o^)/


まずはPointというクラスを作製します



Pointのクラス宣言とメンバ関数pointdisplay()の定義は


次のようになっているとします。

👇

class Point{


public:

int x;

int y;


public:


void pointdisplay();


};


void Point::pointdisplay() {


cout << x << "\n";

cout << y << "\n";

}



🌞   🌞   🌞   🌞   🌞   🌞   🌞



マックス「いよいよくるか」



🌞   🌞   🌞   🌞   🌞   🌞   🌞


+演算子に



               p1+p2; 




のように




         💖クラスPoint型の💖 




オブジェクトp1とオブジェクトp2を足し合わせる機能を追加してみたいとおもいます。



そのためには


Pointのクラス宣言とメンバ関数pointdisplay()の定義に


さらに


次のように


+演算子のオーバーロードの部分を書きくわえます」


👇


class Point{


public:

int x;

int y;


public:


void pointdisplay();


public:


Point operator+(Point p);

//👆🌞+演算子のオーバーロード宣言です



};


void Point::pointdisplay() {


cout << x << "\n";

cout << y << "\n";

}



Point Point::operator+(Point p)

{

Point a;


a.x = x + p.x;

a.y = y + p.y;

return a;

}

//👆🌞+演算子のオーバーロードの定義です


ここで


Pointのクラス宣言に


public:


Point operator+(Point p);


が加えられていて


+演算子の新たな機能の定義として


Point Point::operator+(Point p)

{

Point a;


a.x = x + p.x;

a.y = y + p.y;

return a;

}


が追加されていることに注目してね。」



なぜ このように記述されるか


その仕組みは後のエピソードで解説いたします


                    solarplexussより







マックス「クラスPoint型の 


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


   +演算子のオーバーロード宣言は


       💖クラスPointの内部💖で


設定されるってことか?」



🌞   🌞   🌞   🌞   🌞   🌞   🌞


         

        そこに気づいちゃった?


そう


+演算子に



               p1+p2; 




のように




         💖クラスPoint型の💖 




オブジェクトp1とオブジェクトp2を足し合わせる機能を追加するには


Pointのクラス宣言内に


+演算子のオーバーロード宣言をかきくわえて


さらに


+演算子のオーバーロードの定義を記述します


ということは


全く別のクラス


Bodydataのようなものがあって


Bodydataのオブジェクト宣言


Bodydata b1,b2;


を行い


         オブジェクトb1とb2を直接足し合わせる


              b1+b2


が実行できるよう


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


Bodydataのクラス宣言内に


+演算子のオーバーロードに関する部分(+演算子のオーバーロード宣言)をかきくわえて


+演算子のオーバーロードの定義を記述する必要があります



🌞   🌞   🌞   🌞   🌞   🌞   🌞


ソーラー「そうか!


+演算子に



               p1+p2; 




のように




         💖クラスPoint型の💖 




オブジェクトp1とオブジェクトp2を足し合わせる機能を追加するために


Pointのクラス宣言内に


+演算子のオーバーロードに関する部分(+演算子のオーバーロードs宣言)をかきくわえて


さらに


+演算子のオーバーロードの定義を記述したとしても


+演算子には



 💖クラスPoint型の💖 




オブジェクトp1とオブジェクトp2を足し合わせる機能が追加されただけで




         🍋別のクラスBodydata型の🍋



オブジェクトb1とオブジェクトb2を


b1+b2;


のように


足し合わせることはできない


つまり


+演算子に


クラスBodydata型の


オブジェクトb1とオブジェクトb2を


b1+b2;


のように


足し合わせる機能は追加されないというわけなんだね」


int(イント)「なるほど、なるほど😊」


てんC「


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



そのクラスごとに個別に設定されるというわけなのですね。」



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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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