Cpp クラス 継承 アップキャスト 新しいページはコチラ
提供: yonewiki
(→クラス 継承 アップキャスト) |
(→クラス 継承 アップキャスト) |
||
| 97行: | 97行: | ||
それで派生クラスは以下のようなものを作りました。まずは、オプション料金を一つだけ受け取るクラス。 | それで派生クラスは以下のようなものを作りました。まずは、オプション料金を一つだけ受け取るクラス。 | ||
| − | <span style="color: #ffffff; background-color: #555555; padding: 0px 5px 0px 5px; display: inline-block;">cpp <span>(</span> | + | <span style="color: #ffffff; background-color: #555555; padding: 0px 5px 0px 5px; display: inline-block;">cpp <span>(</span>派生クラス DeriveInheritance.h<span>)</span><!-- padding 上 右 下 左--> |
<syntaxhighlight2 lang="cpp" line> | <syntaxhighlight2 lang="cpp" line> | ||
#ifndef __DERIVEINHERITANCE_H_YONET__ | #ifndef __DERIVEINHERITANCE_H_YONET__ | ||
| 161行: | 161行: | ||
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で合計金額を出力します。 | 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で合計金額を出力します。 | ||
| + | |||
| + | |||
| + | 2つめの派生クラスはオプション金額を複数、配列によって受け取るものを作ります。以下のとおりです。 | ||
| + | |||
| + | <span style="color: #ffffff; background-color: #555555; padding: 0px 5px 0px 5px; display: inline-block;">cpp <span>(</span>派生クラス DeriveInheritance.h<span>)</span><!-- padding 上 右 下 左--> | ||
| + | <syntaxhighlight2 lang="cpp" line> | ||
| + | #ifndef __DERIVEARRINHERITANCE_H_YONET__ | ||
| + | #define __DERIVEARRINHERITANCE_H_YONET__ | ||
| + | #if _MSC_VER > 1000 | ||
| + | #pragma once | ||
| + | #endif | ||
| + | #include "BaseInheritance.h" | ||
| + | |||
| + | class CDeriveArrInheritance :public CBaseInheritance { | ||
| + | private: | ||
| + | int m_iDeriveOption = 0; | ||
| + | int m_iDeriveMoney = 0; | ||
| + | int m_iSize = 0; | ||
| + | int* m_piDeriveOptionArr = nullptr; | ||
| + | void mf_vDeriveSumMoney(); | ||
| + | public: | ||
| + | CDeriveArrInheritance(int iArgMoney, int iArgMonth); | ||
| + | CDeriveArrInheritance(int iArgMoney, int iArgMonth, int* piArgOption,int iSize); | ||
| + | ~CDeriveArrInheritance(); | ||
| + | void mf_vDeriveArrDispValue(); | ||
| + | |||
| + | void mf_vDeriveSetArrOption(int* piArgOption); | ||
| + | int mf_iDeriveGetArrOption(); | ||
| + | }; | ||
| + | #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 "DeriveArrInheritance.h" | ||
| + | |||
| + | CDeriveArrInheritance::CDeriveArrInheritance(int iArgMoney, int iArgMonth) | ||
| + | :CBaseInheritance(iArgMoney, iArgMonth){ | ||
| + | printf("Constructor:CDriveArrInheritance(int,int)\n"); | ||
| + | |||
| + | } | ||
| + | |||
| + | CDeriveArrInheritance::CDeriveArrInheritance(int iArgMoney, int iArgMonth, int* piArgOption,int iArgSize) | ||
| + | :CBaseInheritance(iArgMoney, iArgMonth) { | ||
| + | printf("Constructer:CDeriveArrInheritance(int,int,int*,int)\n"); | ||
| + | |||
| + | m_iSize = iArgSize; | ||
| + | mf_vDeriveSetArrOption(piArgOption); | ||
| + | } | ||
| + | |||
| + | CDeriveArrInheritance::~CDeriveArrInheritance() { | ||
| + | printf("Destructer:~CDeriveArrInheritance()\n"); | ||
| + | delete[] m_piDeriveOptionArr; | ||
| + | } | ||
| + | |||
| + | |||
| + | int CDeriveArrInheritance::mf_iDeriveGetArrOption() { | ||
| + | return m_iDeriveOption; | ||
| + | } | ||
| + | |||
| + | void CDeriveArrInheritance::mf_vDeriveArrDispValue() { | ||
| + | int iSumMoney = mf_iDeriveGetArrOption() + mf_iBaseSumMoney(); | ||
| + | printf("DeriveMoney=%d\n", iSumMoney); | ||
| + | } | ||
| + | |||
| + | void CDeriveArrInheritance::mf_vDeriveSumMoney() { | ||
| + | for (int iScan = 0; iScan < m_iSize; iScan++) { | ||
| + | m_iDeriveOption += m_piDeriveOptionArr[iScan]; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void CDeriveArrInheritance::mf_vDeriveSetArrOption(int* piArgOption) { | ||
| + | m_piDeriveOptionArr = new int[m_iSize]; | ||
| + | for (int iScan = 0; iScan < m_iSize; iScan++) { | ||
| + | m_piDeriveOptionArr[iScan] = piArgOption[iScan]; | ||
| + | } | ||
| + | mf_vDeriveSumMoney(); | ||
| + | } | ||
| + | </syntaxhighlight2> | ||
| + | |||
| + | |||
[[C PlusPlus#C++からの技術|C++]]に戻る | [[C PlusPlus#C++からの技術|C++]]に戻る | ||