| この問題を解くためには… |
| → 基本編第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_
#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++;
}
#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メソッドの概要
回数:6回
回数:0回
| 関数名 | 戻り値の型 | 引数 | 概要 |
|---|---|---|---|
| count | void | int型 | 与えた引数の数だけ、回数をカウントする |
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_
#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;
}
#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クラスのコンストラクタの概要
v2 =(1.1 , 2.3)
| 関数名 | 戻り値の型 | 引数 | 概要 |
|---|---|---|---|
| Vector | なし | double型×2 | 与えた引数を、m_x、m_yに代入 |









