この問題を解くためには…
 → 基本編第7日目参照

問題7:ポリモーフィズム

prob7-1.(難易度★)

以下のプログラムは、回数をカウントするカウンター(Counter)クラスと、それを利用したプログラムである。Counterクラスに、引数付きのcount()メソッドを新たに追加し、以下のプログラムを完成させなさい。

prob7-1:counter.h
#ifndef _COUNTER_H_
#define _COUNTER_H_

//	カウンタークラス
class Counter{
private:
	//	カウント
	int m_count;
public:
	//	コンストラクタ
	Counter();
	//	カウンタをリセット
	void reset();
	//	カウントされた回数を取得
	int getCount();
	//	1ずつカウント
	void count();
};

#endif // _COUNTER_H_
counter.cpp
#include "counter.h"

//	コンストラクタ
Counter::Counter() : m_count(0)
{

}
//	カウンタをリセット
void Counter::reset()
{
	m_count = 0;
}
//	回数を取得
int Counter::getCount()
{
	return m_count;
}
//	1ずつカウント
void Counter::count()
{
	m_count++;
}
main.cpp
#include <iostream>
#include "counter.h"

using namespace std;

int main(){
	//	カウンタを生成
	Counter* pC = new Counter();
	pC->count();	//	1回カウント
	pC->count();	//	1回カウント
	cout << "回数:" << pC->getCount() << "回" << endl;
	pC->count(4);	//	4回カウント
	cout << "回数:" << pC->getCount() << "回" << endl;
	//	カウンタをリセット
	pC->reset();
	cout << "回数:" << pC->getCount() << "回" << endl;
	//	カウンタを消去
	delete pC;
	return 0;
}

期待される実行結果
回数:2回
回数:6回
回数:0回
追加するcountメソッドの概要
関数名戻り値の型引数概要
countvoidint型与えた引数の数だけ、回数をカウントする

prob7-2.(難易度★)

以下のプログラムは、2次元のベクトル(Vector)クラスと、それを使用したサンプルのプログラムである。Vectorクラスに、指定された仕様の引数つきのコンストラクタを追加し、プログラムを完成させなさい。

prob7-2:vector.h
#ifndef _VECTOR_H_
#define _VECTOR_H_

//	ベクトルクラス
class Vector{
private:
	double m_x;
	double m_y;
public:
	//	コンストラクタ
	Vector();
	//	成分の設定
	void set(double x, double y);
	//	x成分の取得
	double getX();
	//	y成分の取得
	double getY();
};

#endif // _VECTOR_H_
vector.cpp
#include "vector.h"

//	コンストラクタ
Vector::Vector() : m_x(0), m_y(0)
{
}
//	成分の設定
void Vector::set(double x, double y)
{
	m_x = x;
	m_y = y;
}
//	x成分の取得
double Vector::getX()
{
	return m_x;
}
//	y成分の取得
double Vector::getY()
{
	return m_y;
}
main.cpp
#include <iostream>
#include "vector.h"

using namespace std;

int main(){
	Vector *v1, *v2;
	//	引数なしのコンストラクタで生成
	v1 = new Vector();
	//	引数つきのコンストラクタで生成
	v2 = new Vector(1.1, 2.3);
	v1->set(3.8, 2.7);
	cout << "v1 =(" << v1->getX() << " , " << v1->getY() << ")" << endl;
	cout << "v2 =(" << v2->getX() << " , " << v2->getY() << ")" << endl;
	delete v1;
	delete v2;
	return 0;
}
期待される実行結果
v1 =(3.1 , 2.7)
v2 =(1.1 , 2.3)
追加するVectorクラスのコンストラクタの概要
関数名戻り値の型引数概要
Vectorなしdouble型×2与えた引数を、m_x、m_yに代入