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++]]に戻る |