Cpp クラス 継承 アップキャスト 新しいページはコチラ
提供: yonewiki
(→クラス 継承 アップキャスト) |
(→クラス 継承 アップキャスト) |
||
| 38行: | 38行: | ||
| + | いくら単純とはいえ3つも派生クラスを作れば、プログラムは長くなりますけどね。 | ||
| + | <span style="color: #ffffff; background-color: #555555; padding: 0px 5px 0px 5px; display: inline-block;">cpp <span>(</span>基底クラス BaseInheritance.h<span>)</span><!-- padding 上 右 下 左--> | ||
| + | <syntaxhighlight2 lang="cpp" line> | ||
| + | #ifndef __BASEINHERITANCE_H_YONET__ | ||
| + | #define __BASEINHERITANCE_H_YONET__ | ||
| + | #if _MSC_VER > 1000 | ||
| + | #pragma once | ||
| + | #endif | ||
| + | |||
| + | class CBaseInheritance { | ||
| + | protected: | ||
| + | int m_iBaseMoney = 0; | ||
| + | int m_iBaseMonth = 0; | ||
| + | int mf_iBaseSumMoney(); | ||
| + | public: | ||
| + | CBaseInheritance(); | ||
| + | CBaseInheritance(int iArgBaseMoney, int iArgBaseMonth); | ||
| + | ~CBaseInheritance(); | ||
| + | void mf_vBaseDispValue(); | ||
| + | }; | ||
| + | #endif | ||
| + | </syntaxhighlight2> | ||
| + | |||
| + | <span style="color: #ffffff; background-color: #555555; padding: 0px 5px 0px 5px; display: inline-block;">cpp <span>(</span>基底クラス BaseInheritance.cpp<span>)</span><!-- padding 上 右 下 左--> | ||
| + | <syntaxhighlight2 lang="cpp" line> | ||
| + | #include "pch.h" | ||
| + | #include "BaseInheritance.h" | ||
| + | |||
| + | CBaseInheritance::CBaseInheritance() { | ||
| + | printf("Constructor:CBaseInheritance()\n"); | ||
| + | } | ||
| + | |||
| + | CBaseInheritance::CBaseInheritance(int iArgBaseMoney, int iArgBaseMonth) { | ||
| + | m_iBaseMoney = iArgBaseMoney; | ||
| + | m_iBaseMonth = iArgBaseMonth; | ||
| + | printf("Constructor:CBaseInheritance(int,int)\n"); | ||
| + | } | ||
| + | |||
| + | CBaseInheritance::~CBaseInheritance() { | ||
| + | printf("Destructor:~CBaseInheritance()\n"); | ||
| + | } | ||
| + | |||
| + | int CBaseInheritance::mf_iBaseSumMoney() { | ||
| + | return (m_iBaseMoney * m_iBaseMonth); | ||
| + | } | ||
| + | |||
| + | void CBaseInheritance::mf_vBaseDispValue() { | ||
| + | int iSumMoney = mf_iBaseSumMoney(); | ||
| + | printf("BaseMoney=%d\n", iSumMoney); | ||
| + | } | ||
| + | </syntaxhighlight2> | ||
| + | |||
| + | 基底クラスは月額料金と加入月数を受け取って、合計金額を返すという機能を持っています。サブスクリプション(定額契約)の基本ですね。コンストラクタ(CBaseInheritance::CBaseInheritance)は受け取った引数を月額料金変数(m_iBaseMoney)と利用月の変数(m_iBaseMonth)に格納しています。合計金額を算出するメンバ関数(CBaseInheritance::mf_iBaseSumMoney)で、月額料金×利用月の結果を返却します。合計金額表示用の関数は合計金額を算出するメンバ関数を呼び出して、printf分で表示します。std::cinやstd::coutというのがc++の入出力標準<iostream>ヘッダファイルを呼び出して利用するのが一般的ですが、あえて<cstdio>で使えるprintfを利用しています。これは管理人の好みです。cin、coutって>>とか<<とかわかりずらくて、人に見せるプログラムで使う時は、こういうものを使うのが好きではないです。そもそも分かり辛い記事が、ますます分かり辛くなってしまうような気がします。 | ||
| + | |||
| + | |||
| + | それで派生クラスは以下のようなものを作りました。まずは、オプション料金を一つだけ受け取るクラス。 | ||
[[C PlusPlus#C++からの技術|C++]]に戻る | [[C PlusPlus#C++からの技術|C++]]に戻る | ||