クラスのメンバ変数、メンバ関数にアクセス指定子を設定しない場合はアクセス指定子privateを設定したことになります

#include <iostream>


using namespace std;


class Cube {


public:

int no;

public:

float tate;

public:

float yoko;

public:

float takasa;

public:

void display();


};


void Cube::display() {


cout << "立方体につけられたナンバーは" << no << "です" << "\n";

cout << "立方体の縦の長さは" << tate << "です" << "\n";

cout << "立方体の横の長さは" << yoko << "です" << "\n";

cout << "立方体の高さの長さは" << takasa << "です" << "\n";


}



int main() {


Cube cube1;


cube1.no = 1;

cube1.tate = 2.0;

cube1.yoko = 3.0;

cube1.takasa = 4.0;


cube1.display();


return 0;

}



ビルド実行結果


立方体につけられたナンバーは1です

立方体の縦の長さは2です

立方体の横の長さは3です

立方体の高さの長さは4です


マックス「このプログラムのように


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


int no;

float tate;

float yoko;

float takasa;


メンバ関数宣言

void display();

アクセス指定子publicが指定されていると


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


Cube cube1;


を実行して生成された


オブジェクトcube1のメンバ変数

cube1.no

cube1.tate

cube1.yoko

cube1.takasa


オブジェクトcube1のメンバ関数


cube1.display()


を使用することができた。


ぶーにゃん「できにゃ」



マックス「


逆に


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


int no;

float tate;

float yoko;

float takasa;


メンバ関数宣言

void display();

アクセス指定子privateが指定されていると


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


Cube cube1;


を実行して生成される


オブジェクトcube1のメンバ変数

cube1.no

cube1.tate

cube1.yoko

cube1.takasa



オブジェクトcube1のメンバ関数


cube1.display()


を使用することはできなかった。」


ぶーにゃん「にゃにゃ」


マックス「


それなら


最初から


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


int no;

float tate;

float yoko;

float takasa;


メンバ関数宣言

void display();


なにもアクセス指定子を設定しなかったらどうなるんだ


次のクラス宣言のようにだ

👇

class Cube {


int no;

float tate;

float yoko;

float takasa;


void display();

};

👆

こんな具合にな


このクラスを用いた


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


Cube cube1;


を実行して生成される


オブジェクトcube1のメンバ変数

cube1.no

cube1.tate

cube1.yoko

cube1.takasa



オブジェクトcube1のメンバ関数


cube1.display()


を使用することはできるのかな?


どうなると思う?


てんCよ」


てんC「・・・どうでしょうか・・・??


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


int no;

float tate;

float yoko;

float takasa;


メンバ関数宣言

void display();


なにもアクセス指定子を設定しないのであれば


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


Cube cube1;


を実行して


オブジェクトcube1のメンバ変数

cube1.no

cube1.tate

cube1.yoko

cube1.takasa



オブジェクトcube1のメンバ関数


cube1.display()


を作製した場合


オブジェクトcube1のメンバ変数


cube1.no

cube1.tate

cube1.yoko

cube1.takasa


オブジェクトcube1のメンバ関数


cube1.display()


ともに


使用することができるような気がしますね」


ソーラー「そうだね。 僕もそんな感じがしちゃうな」


ソーラー「それでは


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


int no;

float tate;

float yoko;

float takasa;


メンバ関数宣言

void display();


なにもアクセス指定子を設定しない状態の


クラス宣言


class Cube {


int no;

float tate;

float yoko;

float takasa;


void display();

};


を用いたプログラムを実行してみよう。


さあ どうなるかな?」


#include <iostream>


using namespace std;


class Cube {

//💖アクセス指定子を設定していません

int no;

float tate;

float yoko;

float takasa;


void display();

};


void Cube::display() {


cout << "立方体につけられたナンバーは" << no << "です" << "\n";

cout << "立方体の縦の長さは" << tate << "です" << "\n";

cout << "立方体の横の長さは" << yoko << "です" << "\n";

cout << "立方体の高さの長さは" << takasa << "です" << "\n";


}


int main() {


Cube cube1;


cube1.no = 1;

cube1.tate = 2.0;

cube1.yoko = 3.0;

cube1.takasa = 4.0;


cube1.display();


return 0;

}




ソーラー「それでは ビルドっ」


プログラムの実行結果


エラー (アクティブ) E0265 関数 "Cube::display" (宣言された 行 15) にアクセスできません

エラー (アクティブ) E0265 メンバー "Cube::yoko" (宣言された 行 9) にアクセスできません

エラー (アクティブ) E0265 メンバー "Cube::tate" (宣言された 行 8) にアクセスできません

エラー (アクティブ) E0265 メンバー "Cube::takasa" (宣言された 行 10) にアクセスできません

エラー (アクティブ) E0265 メンバー "Cube::no" (宣言された 行 7) にアクセスできません

エラー C2248 'Cube::yoko': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。

エラー C2248 'Cube::tate': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。

エラー C2248 'Cube::takasa': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。

エラー C2248 'Cube::no': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。

エラー C2248 'Cube::display': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。


マックス「


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


Cube cube1;


を実行しても


全然


オブジェクトcube1のメンバ変数


cube1.no

cube1.tate

cube1.yoko

cube1.takasa


オブジェクトcube1のメンバ関数


cube1.display()


にアクセスできなくなっているぞ



俺ってきまってるなあ は~~~はっはぁぁ~~」



🌞  🌞  🌞  🌞  🌞  🌞  🌞  🌞  🌞  🌞  🌞  


このように


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


int no;

float tate;

float yoko;

float takasa;


メンバ関数宣言

void display();

にアクセス指定子を設定しないと


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


Cube cube1;


を実行して


オブジェクトcube1のメンバ変数

cube1.no

cube1.tate

cube1.yoko

cube1.takasa


オブジェクトcube1のメンバ関数


cube1.display()


を生成しても使用できなくなります


つまり


Cubeのクラス宣言内の


メンバ変数宣言


int no;

float tate;

float yoko;

float takasa;


メンバ関数宣言

void display();


なにもアクセス指定子を設定しないと


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


int no;

float tate;

float yoko;

float takasa;


メンバ関数宣言

void display();


アクセス指定子privateが設定されたことに等しくなります


                       solarplexussより


🌞  🌞  🌞  🌞  🌞  🌞  🌞  🌞  🌞  🌞  🌞  






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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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