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

問題6:継承

prob6-1.(難易度★)

以下のプログラムに、飛行機クラスAirplaneを継承した戦闘機クラスFighterを指定されたとおりの仕様で追加し、期待された実行結果通りにプログラムが動くように改造しなさい。

prob6-1:airplane.h
#ifndef _AIRPLANE_H_
#define _AIRPLANE_H_

//	飛行機クラス
class Airplane{
public:
	//	飛行する
	void fly();
};

#endif // _AIRPLANE_H_
airplane.cpp
#include "airplane.h"
#include <iostream>

using namespace std;

void Airplane::fly(){
	cout << "飛行する" << endl;
}
main.cpp
#include <iostream>
#include "fighter.h"

using namespace std;

int main(){
	Fighter f;	//	戦闘機クラス
	Airplane a;	//	飛行機クラス
	//	飛行機が飛行する
	a.fly();
	//	戦闘機が飛行する
	f.fly();
	//	戦闘機が戦闘する
	f.fight();
	return 0;
}
期待される実行結果
飛行する← Airplaneクラスのfly()メソッドによる処理
飛行する← Fighterクラスのfly()メソッドによる処理
戦闘する← Fighterクラスのfly()メソッドによる処理

Fighterクラスのヘッダファイルは、fighter.h、ソースファイルは、fighter.cppとすること。

クラスFighterの仕様(メンバ関数)
関数名 戻り値の型 引数 概要
fight void なし 「戦闘する」と表示し、改行する。

prob6-2.(難易度★)

以下のプログラムに、基本計算クラスFundClacを継承した新計算クラスNewCalcを指定されたとおりの仕様で追加し、期待された実行結果通りにプログラムが動くように改造しなさい。このさい、必要があれば、FundCalcクラスの必要な部分を改造しなさい。

prob6-2:fundcalc.h
#ifndef _FUNDCALC_H_
#define _FUNDCALC_H_

class FundCalc{
private:
	double m_number1;	//	一つ目の数
	double m_number2;	//	二つ目の数
public:
	//	コンストラクタ
	FundCalc();
	//	一つ目の数を設定
	void setNumber1(double number);
	//	二つ目の数を設定
	void setNumber2(double number);
	//	一つ目の数を設定
	double getNumber1();
	//	二つ目の数を設定
	double getNumber2();
	//	二つの数の和を出力
	double add();
	//	二つの数の差を出力
	double sub();
};

#endif // _FUNDCALC_H_
fundcalc.cpp
#include "fundcalc.h"

FundCalc::FundCalc() : m_number1(0), m_number2(0)
{
}
//	一つ目の数を設定
void FundCalc::setNumber1(double number)
{
	m_number1 = number;
}
//	二つ目の数を設定
void FundCalc::setNumber2(double number)
{
	m_number2 = number;
}
//	一つ目の数を設定
double FundCalc::getNumber1()
{
	return m_number1;
}
//	二つ目の数を設定
double FundCalc::getNumber2()
{
	return m_number2;
}
//	二つの数の和を出力
double FundCalc::add()
{
	return m_number1 + m_number2;
}
//	二つの数の差を出力
double FundCalc::sub()
{
	return m_number1 - m_number2;
}
main.cpp
#include <iostream>
#include "newcalc.h"

using namespace std;

int main(){
	NewCalc n;
	n.setNumber1(10);	//	一つ目の数を設定
	n.setNumber2(2);	//	二つ目の数を設定
	cout << n.getNumber1() << " + " << n.getNumber2() << " = " << n.add() << endl;
	cout << n.getNumber1() << " - " << n.getNumber2() << " = " << n.sub() << endl;
	cout << n.getNumber1() << " * " << n.getNumber2() << " = " << n.mul() << endl;
	cout << n.getNumber1() << " / " << n.getNumber2() << " = " << n.div() << endl;

	return 0;
}
期待される実行結果の例
10 + 2 = 12
10 - 2 = 8
10 * 2 = 20
10 / 2 = 5

NewCalcクラスのヘッダファイルは、newcalc.h、ソースファイルは、newcalc.cppとすること。

クラスNewCalcの仕様(メンバ関数)
関数名 戻り値の型 引数 概要
mul double なし メンバ変数m_number1、m_number2の積
div double なし メンバ変数m_number1、m_number2の商