授業中に作成したプログラムを片っ端から乗っけていきです。C++ を中心に掲載中。

派生クラスから隠蔽されたメンバにアクセスする

#include<iostream>
using namespace std;
class SampleA{
public:
	int a;
	int same;
};
class SampleB: public SampleA{
	int b;
	int same;
};
void main(){
	SampleB bb;
	SampleA* pa = &bb;
		// 派生クラスSampleB型オブジェクトのアドレスを
		// SampleA型に変換
	bb.a = 100;
	bb.b = 200;
	bb.same = 300;
	bb.SampleA::same = 400;
	cout << " bb.a = " << bb.a << '\n';
	cout << " bb.b = " << bb.b << '\n';
	cout << " bb.same = " << bb.same << '\n';
	cout << " bb.SampleA::same = " << bb.SampleA::same << '\n';
	cout << " pa->a = " << pa->a << '\n';
				// SampleAのポインタで指定
	cout << " pa->same = " << pa->same << '\n';
				// SampleAのポインタで指定
}
SampleAとSampleBには同一メンバsameがある。隠蔽されたSampleAのsame2アクセスするためにはスコープ解釈演算子 :: を使う必要がある。

 bb.a = 100
 bb.b = 200
 bblsame = 300
 bb.SampleA::same = 400
 pa->a = 100
 pa->same = 400

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Creative Commons

Creative Commons License
この作品は、クリエイティブ・コモンズ・ライセンスの下でライセンスされています。

メンバーのみ編集できます