読者です 読者をやめる 読者になる 読者になる

たぶん週刊「今週の進捗」

1週間に勉強したことや実装したことをネタに、週に1回(主に土日に)更新していく予定です。「多分」なので、臨時休刊があってもご海容ください。

引数有のコンストラクタを持つクラスの配列の初期化

以前自分が書いたコードを見てわけがわからなかったので。

// 引数有のコンストラクタを持つクラスの配列の初期化
#include <iostream>
#include <new> // placement new のために new をインクルード
using namespace std;

class Hoge{
private:
	int int_var;

public:
	Hoge();
	Hoge(int int_argv);
	void PrintIntVar();
};

// 引数なしコンストラクタを宣言する
Hoge::Hoge(){
	int_var = -1;
};

Hoge::Hoge(int int_argv){
	int_var = int_argv;
};

void Hoge::PrintIntVar(){
	cout << int_var << " ";
}

int main() {
	// your code goes here
	Hoge hoge[10];

	for(int i=0; i<10; i++){
		hoge[i].PrintIntVar();
	}
	cout << endl;
	
	for(int i=0; i<10; i++){
		//各要素に対してplacement new
		new(hoge+i)Hoge(i);
	}
	
	for(int i=0; i<10; i++){
		hoge[i].PrintIntVar();
	}
	cout << endl;
	
	return 0;
}

Ideone.com - qQl3li - Online C++0x Compiler & Debugging Tool

余談

以前 配列の長さを取得する方法 - 多分週刊「今週の進捗」 という記事を書いてから、
C++はテンプレート関数でなんとかできる」とのご指摘を頂きました。
[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ
テンプレートを勉強したらまた読みなおそう。