Cpp クラス 継承 アップキャスト 新しいページはコチラ
提供: yonewiki
(→クラス 継承 アップキャスト) |
(→クラス 継承 アップキャスト) |
||
| 96行: | 96行: | ||
それで派生クラスは以下のようなものを作りました。まずは、オプション料金を一つだけ受け取るクラス。 | それで派生クラスは以下のようなものを作りました。まずは、オプション料金を一つだけ受け取るクラス。 | ||
| + | |||
| + | <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 __DERIVEINHERITANCE_H_YONET__ | ||
| + | #define __DERIVEINHERITANCE_H_YONET__ | ||
| + | #if _MSC_VER > 1000 | ||
| + | #pragma once | ||
| + | #endif | ||
| + | #include "BaseInheritance.h" | ||
| + | |||
| + | class CDeriveInheritance :public CBaseInheritance { | ||
| + | private: | ||
| + | int m_iDeriveOption = 0; | ||
| + | int m_iDeriveMoney = 0; | ||
| + | public: | ||
| + | CDeriveInheritance(int iArgMoney, int iArgMonth); | ||
| + | CDeriveInheritance(int iArgMoney, int iArgMonth, int iArgOption); | ||
| + | ~CDeriveInheritance(); | ||
| + | void mf_vDeriveDispValue(); | ||
| + | int mf_iDeriveSumMoney(); | ||
| + | void mf_vDeriveSetOptionValue(int iArgOptionValue); | ||
| + | }; | ||
| + | #endif | ||
| + | </syntaxhighlight2> | ||
| + | |||
| + | <span style="color: #ffffff; background-color: #555555; padding: 0px 5px 0px 5px; display: inline-block;">cpp <span>(</span>派生クラス DeriveInheritance.cpp<span>)</span><!-- padding 上 右 下 左--> | ||
| + | <syntaxhighlight2 lang="cpp" line> | ||
| + | #include "pch.h" | ||
| + | #include "DeriveInheritance.h" | ||
| + | |||
| + | CDeriveInheritance::CDeriveInheritance(int iArgMoney, int iArgMonth) | ||
| + | :CBaseInheritance(iArgMoney, iArgMonth){ | ||
| + | printf("Constructor:CDriveInheritance(int,int)\n"); | ||
| + | |||
| + | } | ||
| + | |||
| + | CDeriveInheritance::CDeriveInheritance(int iArgMoney, int iArgMonth, int iArgOption) | ||
| + | :CBaseInheritance(iArgMoney, iArgMonth) { | ||
| + | printf("Constructer:CDeriveInheritance(int,int,int)\n"); | ||
| + | |||
| + | m_iDeriveOption = iArgOption; | ||
| + | } | ||
| + | |||
| + | CDeriveInheritance::~CDeriveInheritance() { | ||
| + | printf("Destructer:~CDeriveInheritance()\n"); | ||
| + | } | ||
| + | |||
| + | |||
| + | void CDeriveInheritance::mf_vDeriveDispValue() { | ||
| + | int iSumMoney = mf_iDeriveSumMoney(); | ||
| + | printf("DeriveMoney=%d\n", iSumMoney); | ||
| + | } | ||
| + | |||
| + | void CDeriveInheritance::mf_vDeriveSetOptionValue(int iArgOptionMoney) { | ||
| + | m_iDeriveOption = iArgOptionMoney; | ||
| + | } | ||
| + | |||
| + | int CDeriveInheritance::mf_iDeriveSumMoney() { | ||
| + | return mf_iBaseSumMoney() + m_iDeriveOption; | ||
| + | } | ||
| + | |||
| + | |||
| + | </syntaxhighlight2> | ||
| + | |||
| + | Deriveは「派生する」という意味で、CDeriveInheritance(int iArgMoney, int iArgMonth, int iArgOption)は3つの引数を受け取って、基本料金、利用月を基底クラスに初期化リストでそのまま渡しています。そして派生クラスだけが扱う3つめのオプション料金をm_iDeriveOptionに格納しています。引数が2つのBaseクラスと基底クラスと同じ役割のコンストラクタCDeriveInheritance(int iArgMoney, int iArgMonth)があります。2つの引数をそのまま、基底クラスに初期化リストを渡しています。後から、オプション料金だけを指定できる関数CDeriveInheritance::mf_vDeriveSetOptionValueもあります。オプション料も含めた合計金額はmf_iDeriveSumMoneyで計算して返却され、mf_vDeriveDispValueで利用され、printfで合計金額を出力します。 | ||
| + | |||
[[C PlusPlus#C++からの技術|C++]]に戻る | [[C PlusPlus#C++からの技術|C++]]に戻る | ||