privateかpublicか

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
さんとす

privateかpublicか

#1

投稿記事 by さんとす » 12年前

C++の参考書を読みながら勉強しているのですが質問があります。

コード:

class test
{
public:
	test();
	~test();

	void update();
	void draw();

	void calc1();
	void calc2();
	void calc3();

	void set_type(int t)
	{
		type = t;//タイプをもらう
	};

private:
	int type;
	//以下いろいろ

}; 
[code = cpp]#include "practice.h"

test::test()
{
type = 0;
}

test::~test()
{
}

void test::update()
{
//タイプごとに分ける
switch(type)
{
case 1:
calc1();
break;
case 2:
calc2();
break;
case 3:
calc3();
break;
default:
break;
}
}

void test::draw()
{
}

void test::calc1()
{
//いろいろ
}

void test::calc2()
{
//いろいろ
}

void test::calc3()
{
//いろいろ
} [/code]
上のようなコードを作ったのですが(calc1,2,3はそれぞれ違うことをしています。)
ヘッダーのクラスを書くときにかcalc1,2,3はpublicに書いてますが、「public」は他のクラスなどにインスタンスを生成すれば呼び出すことができる・・と覚えてるのですが、ここで他のクラスなど(main文など)で呼び出すのは「update()」であってcalc1,2,3はpublicである必要がないように思えてしまいます。privateのメンバ変数の下(上)に書くのが妥当だと・・・皆様でしたらこの場合privateにcalc1,2,3を書くんでしょうか?
この質問は、現在の参考書は関数はすべて「public」の位置に書いているので、関数はpublicにのみ書くもの?と思ってしまっているからです。
知識が浅いゆえ当たり前のことでも確認を取らないと不安で・・・
よろしお願いします。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: privateかpublicか

#2

投稿記事 by h2so5 » 12年前

外部からアクセスしない関数は、privateにするべきです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: privateかpublicか

#3

投稿記事 by softya(ソフト屋) » 12年前

必要最低限のメンバ関数をpublicにします。
出来るだけprivateになるように気をつけてプログラミングしないとカプセル化とは言えませんので。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る