Cpp クラス 継承 新しいページはコチラ
提供: yonewiki
(→クラス 継承) |
(→クラス 継承) |
||
| 14行: | 14行: | ||
| − | + | 初めて継承という言葉を聞く人はそれって便利なの?って思ったかもしれない。なぜなら、若かりし頃、自分もそれって便利なのみたいな感じでした。継承の技術だけを教えてもらったからなのかもしれない。具体的な活用例って大事なんだなと思うところです。だがしかし!具体的な利用例を考えると以上にながくなるのがサンプルプログラム。継承の説明をしているので、サンプルプログラム全体を見通す必要があり、バランスが大事。カンタンなサンプルで且つ、継承が有意義なプログラムに感じる説明が必要になるのです。でも有意義なプログラムって難しくなり勝ちだから、やっぱ、簡便なものを最初は紹介したいと思います。つまり、サンプルは技術を知るためだけの悪い使い方です。有意義な使い方についてはかなり先になってから、もう一度考えようかなって思ってます。 | |
| − | + | 以下のような毎月のサブスクリプション(月額契約)金額と使用した月数を受け取って、使用した月における合計金額を算出するクラスがあったとします。モノは言いようで、ただの掛け算をするだけのクラスです。 | |
| − | + | ||
| + | |||
| + | <syntaxhighlight2 lang="cpp" line> | ||
| + | #ifndif __BASEINHERITANCE_H_YONET__ | ||
| + | #defint __BASEINHERITANCE_H_YONET__ | ||
| + | #if _MSC_VER > 1000 | ||
| + | #pragma once | ||
| + | #endif | ||
| + | |||
| + | class CBaseInheritance{ | ||
| + | private: | ||
| + | int m_iBaseMoney; | ||
| + | int m_iBaseMonth; | ||
| + | void CBaseInheritance(int iArgBaseMoney, int iArgBaseMonth); | ||
| + | void ~CBaseInheritance(); | ||
| + | public: | ||
| + | void m_fvDispValue(); | ||
| + | int m_fiBaseSumMoney(); | ||
| + | }; | ||
| + | #endif | ||
| + | </syntaxhighlight2> | ||
| + | |||
| + | <syntaxhighlight2 lang="cpp" line> | ||
| + | #include "stdafx.h" | ||
| + | #include "CBaseInheritance.h" | ||
| + | |||
| + | void CBaseInheritance::CBaseInheritance(int iArgBaseMoney,int iArgBaseMonth){ | ||
| + | m_iBase = iArgBaseMoney; | ||
| + | m_iBaseMonth = iArgBaseMonth; | ||
| + | printf("Constructor:CBaseInheritance\n"); | ||
| + | } | ||
| + | void CBaseInheritance::~CBaseInheritance(){ | ||
| + | printf("Destructor:~CBaseInheritance\n"); | ||
| + | } | ||
| + | void CBaseInheritance::m_fvDispValue(){ | ||
| + | printf("Money=%d\n" ,m_iBaseMoney * m_iBaseMonth); | ||
| + | } | ||
| + | int CBaseInheritance::m_fiBaseSumMoney(){ | ||
| + | return (m_iBaseMoney * m_iBaseMonth); | ||
| + | } | ||
| + | </syntaxhighlight2> | ||
| + | |||
| + | 上記のクラスを呼び出すだけで、掛け算をした結果が得られます。 | ||
| + | |||
| + | <syntaxhighlight2 lang="cpp" line> | ||
| + | #include "stdafx.h" | ||
| + | #include "CBaseInheritance.h" | ||
| + | |||
| + | int main(){ | ||
| + | CBaseInheritance objCBaseInheritance(3900, 12); | ||
| + | objCBaseInheritance.m_fvDispValue(); | ||
| + | |||
| + | return 0; | ||
| + | } | ||
| + | </syntaxhighlight2> | ||
| + | |||
| + | |||
| + | と上記のようなメインクラスでの利用をすれば、合計金額が表示されます。これに派生クラスを作りましょう。イメージとしては、この毎月の支払にオプションの利用料金が取られることを考えたようなクラスにしましょう。毎月毎月発生する金額を計算するということが根底にあって、その上にオプション料金を計算するという機能を付け足すので一応継承した感じにしました。ですが、簡単に言えば、合計金額にオプションの金額を足して表示するだけです。機能は何も利用しないので、おそろしくダメな継承ですね。 | ||
| + | |||
| + | |||
| + | でも、勉強だし、簡単なので、やってみましょう。 | ||