クラスのメンバ変数宣言のアクセス指定子がprivateに設定されているときそのクラスの型のオブジェクトのメンバ変数が用いられている自作関数を実行することはできません

つづき・・・



ソーラー「


クラスPointのメンバ変数宣言


int x;

int y;


のアクセス指定子が


privateに設定されていると


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


Point p1;

Point p2;


を実行しても


生成される

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

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


クラスPointのメンバ変数


x

y


にアクセスすることができないため



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

p1.x

p1.y


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

p2.x

p2.y


を生成することはできないからです


そのため


プログラム中に


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

p1.x

p1.y


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

p2.x

p2.y


が用いられている箇所があると


ビルドエラーが表示されることになります




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


普通の自作関数operatr+関数は普通の自作関数なので


          p1+p2


つまり


普通の自作関数operator+関数の定義

👇

Point operator+(Point p, Point q) {


Point a;


a.x = p.x + q.x;

a.y = p.y + q.y;


return a;

}

引数部分の


Point p

Point q

p1

p2

が代入された


Point a;


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

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


return a;


を実行しようとしても



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

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


クラスPointのメンバ変数


x

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 = p1.x + p2.x;

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


return a;



を実行することはできません」


マックス「


つまり


p1+p2


を実行しようとすると


ビルドエラーが表示されるんだろう



結局


クラスPointのメンバ変数宣言


int x;

int y;


のアクセス指定子が


privateに設定されていると


p1+p2


すなわち


自作関数


operator+(p1, p2)



実行することはできないってわけだ


🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞 



  お待たせ(^_-)-☆


  進んでる?


  進んでる?


    テニスでリフレッシュしてきちゃった



🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞 




マックス「い、いつのまに・・


今はどこまで進んでいるか?か


ぬ( ̄∇ ̄;)ハッハッハ 聞くがいい・・



クラスPointのメンバ変数宣言


int x;

int y;


のアクセス指定子が


private


に設定されていると


自作関数operator+関数を


Point operator+(Point p, Point q) {


Point a;


a.x = p.x + q.x;

a.y = p.y + q.y;


return a;

}



のように定義していても



p1+p2


すなわち


クラスPointのメンバ関数でない普通の自作関数


operator+(p1, p2)


実行できないというところまで来たところだ


いろいろ考えたんだが


さすがに


p1+p2


の実行は無理か・・・



🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞 


それなら簡単


クラスPointのメンバ変数宣言


int x;

int y;


のアクセス指定子が


private


に設定されているとき


今の例のように


自作関数operator+の定義内で


アクセス指定子が


private


に設定されているクラスPointのメンバ変数


x

y


が用いられている


ふつうの自作関数operator+を


実行できるようにするには


その自作関数をフレンド関数に設定します


🌞   🌞   🌞   🌞   🌞   🌞   🌞   🌞 


マックス「フレンド関数~~~~~~?」

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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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