MENU
コンテンツ再構築中

C++:オブジェクトの配列とオブジェクトポインタ

CやC++において重要なポインタのオブジェクトポインタについてのメモ。

INDEX

オブジェクトの配列とオブジェクトポインタについて

オブジェクトの配列

オブジェクトは変数なので、変数の配列を宣言する方法でオブジェクトの配列を宣言できる。ここではSampleクラスのオブジェクトの2次元配列を作成し、初期化する処理をメモ。

サンプルコード
[code]
#include
using namespace std;

class Sample {
int a, b;
public:
Sample(int x, int y) { a = x; b = y; }
int get_a() { return a; }
int get_b() { return b; }
};

int main(int argc, const char * argv[])
{
// 2次元配列を宣言
Sample obj[3][2] = {
Sample(1,2), Sample(3,4),
Sample(5,6), Sample(7,8),
Sample(9,10), Sample(11,12)
};

for (int i = 0; i<3; i++) { cout << obj[i][0].get_a() << ","; cout << obj[i][0].get_b() << "\n"; cout << obj[i][1].get_a() << ","; cout << obj[i][1].get_b() << "\n"; } return 0; } [/code]

結果
[code]
1,2
3,4
5,6
7,8
9,10
11,12
[/code]

オブジェクトポインタ

オブジェクトポインタからオブジェクトへのアクセスはアロー演算子 -> を使用する。ポインタをインクリメントすれば次のオブジェクトを指す。

サンプルコード
[code]
#include
using namespace std;

class Sample {
int a,b;
public:
Sample(int n, int m){ a = n; b = m; }
int get_a() { return a; }
int get_b() { return b; }
};

int main(int argc, const char * argv[])
{
Sample obj[3] = {
Sample(1,2), Sample(3,4), Sample(5,6)
};

Sample *p; // ポインタ作成
p = obj; // 配列の開始アドレスを代入

for (int i = 0; i<3; i++) { cout << p->get_a() << " "; cout << p->get_b() << "\n"; p++; // 次のオブジェクトへ } return 0; } [/code]

結果
[code]
1 2
3 4
5 6
[/code]

まとめ

変数もクラスも配列も全てオブジェクトなので、同じようにポインタが使用出来るということです。少しややこしく感じますがシンプルに考えるようにしましょう。

Please share it!
  • URLをコピーしました!
  • URLをコピーしました!
INDEX