LIFE LOG(ここにはあなたのブログ名)

あつあつ備忘録

ソフトやハード、時にはメカの備忘録をまとめていきます

【C++】オブジェクトの配列

f:id:AtsuyaKoike:20190524095847p:plain:w300

  • オブジェクトは変数を持っており、他の変数と同じ機能と属性を持っている
  • オブジェクト配列へのアクセス方法も、ほかの変数配列と同じ

study108.cpp

#include <iostream>
using namespace std;

class samp {
    int a;
public:
    samp( int n ) {
        a = n;
    }
    int get_a() {
        return a;
    }
};

int main() {
    samp ob[4] = { -1, -2, -3, -4 };

    for ( int i = 0; i < 4; ++i )
        cout << ob[i].get_a() << ' ';

    cout << endl;
    return 0;
}

実行

$ ./study108
-1 -2 -3 -4 

この例では、-1から-4までの値をobコンストラクタ関数に渡している

samp ob[4] = { -1, -2, -3, -4 };

これは

samp ob[4] = { samp(-1), samp(-2), samp(-3), samp(-4) };

これと同じ。

study109.cpp

#include <iostream>
using namespace std;

class samp {
    int a;
public:
    samp( int n ) {
        a = n;
    }
    int get_a() {
        return a;
    }
};

int main() {
    samp ob[4][2] = { 1, 2,
                      3, 4,
                      5, 6,
                      7, 8
    };
    
    for ( int i = 0; i < 4; ++i ) {
        cout << ob[i][0].get_a() << ' ';
        cout << ob[i][1].get_a() << "\n";
    }
    cout << endl;

    return 0;
}
$ ./study109
1 2
3 4
5 6
7 8

このように二次元配列も扱うことができる。

study110.cpp

#include <iostream>
using namespace std;

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

int main() {
    samp ob[4][2] = {
        samp( 1,  2), samp( 3,  4),
        samp( 5,  6), samp( 7,  8),
        samp( 9, 10), samp(11, 12),
        samp(13, 14), samp(15, 16)
    };
    
    for ( int i = 0; i < 4; ++i ) {
        cout << ob[i][0].get_a() << ' ';
        cout << ob[i][0].get_b() << "\n";
        cout << ob[i][1].get_a() << ' ';
        cout << ob[i][1].get_b() << "\n";
    }
    cout << endl;
    return 0;
}
$ ./study110 
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16

コンストラクタに複数の引数を渡すことができるが、その場合は長い初期化構文を使用しなければならない。




引用・参考はこちら

f:id:AtsuyaKoike:20190524100759j:plain:w200
独習C++ 第4版 https://www.amazon.co.jp/dp/4798119768