Cpp クラス 静的メンバ関数 新しいページはコチラ
提供: yonewiki
(→静的メンバ関数) |
(→静的メンバ関数) |
||
29行: | 29行: | ||
また位置からサンプルをつくるのもなんなので、[[Cpp クラス メンバ関数|メンバ関数]]の記事を記述したときに使ったプログラムを改造することでサンプルにしてみたいと思います。 | また位置からサンプルをつくるのもなんなので、[[Cpp クラス メンバ関数|メンバ関数]]の記事を記述したときに使ったプログラムを改造することでサンプルにしてみたいと思います。 | ||
+ | |||
+ | |||
+ | MemberFunc001.hファイルに以下のように書き換えます。 | ||
+ | <syntaxhighlight lang="cpp" line start="1"> | ||
+ | #pragma once | ||
+ | #include "membervar001.h" | ||
+ | class CMemberFunc001 : public CMemberVar001 | ||
+ | { | ||
+ | public: | ||
+ | void mfpub_DerivationPrint(void); | ||
+ | static void mfpub_XerSwap_mpub_nValue(CMemberFunc001& a,CMemberFunc001& b); //★1.静的メンバ関数 | ||
+ | CMemberFunc001(void); | ||
+ | ~CMemberFunc001(void); | ||
+ | }; | ||
+ | |||
+ | |||
+ | </syntaxhighlight> | ||
+ | そして、MemberFunc001.cppに★1.部分のプログラムを追加して | ||
+ | <syntaxhighlight lang="cpp" line start="1"> | ||
+ | … | ||
+ | 省略 | ||
+ | … | ||
+ | void CMemberFunc001::mfpub_XerSwap_mpub_nValue(CMemberFunc001& a,CMemberFunc001& b){ | ||
+ | int n = a.mpub_nValue; | ||
+ | a.mpub_nValue = b.mpub_nValue; | ||
+ | b.mpub_nValue = n; | ||
+ | CMemberVar001::m_nValue_static = 0; | ||
+ | } | ||
+ | … | ||
+ | 省略 | ||
+ | … | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | とします。 | ||
+ | |||
+ | |||
+ | それでメインプログラムは以下のように書き換えます。 | ||
+ | sample_main.cpp | ||
+ | <syntaxhighlight lang="cpp" line start="1"> | ||
+ | #include "stdafx.h" | ||
+ | #include "MemberVar001.h" | ||
+ | #include "MemberFunc001.h" | ||
+ | |||
+ | int _tmain(int argc, _TCHAR* argv[]) | ||
+ | { | ||
+ | CMemberFunc001* CMemberFunc001_Instance = new CMemberFunc001; | ||
+ | CMemberFunc001* CMemberFunc002_Instance = new CMemberFunc001; | ||
+ | |||
+ | CMemberFunc001_Instance->m_nValue_static = 1; | ||
+ | CMemberFunc001_Instance->mpub_nValue = 1000; | ||
+ | CMemberFunc002_Instance->mpub_nValue = 2000; | ||
+ | |||
+ | printf("%d %d %d\n",CMemberVar001::m_nValue_static,CMemberFunc001_Instance->mpub_nValue,CMemberFunc002_Instance->mpub_nValue); | ||
+ | |||
+ | CMemberFunc001::mfpub_XerSwap_mpub_nValue(*CMemberFunc001_Instance,*CMemberFunc002_Instance); | ||
+ | |||
+ | printf("%d %d %d\n",CMemberVar001::m_nValue_static,CMemberFunc001_Instance->mpub_nValue,CMemberFunc002_Instance->mpub_nValue); | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | そうすると | ||
+ | |||
+ | 出力結果 | ||
+ | <syntaxhighlight lang="text" line start="1"> | ||
+ | ■CMemberVar001コンストラクタ mf_Printプライベート関数アクセス可能 | ||
+ | CMemberVar001 プライベート メンバ関数 | ||
+ | mpub_nValue=-842150451,mpro_nValue=-842150451,m_nValue= 2000 | ||
+ | |||
+ | CMemberVar001 mf_Print関数から呼び出し | ||
+ | ★CMemberVar001 プロテクト mfpub_Print2関数 | ||
+ | ★CMemberVar001 パブリック mfpub_Print2関数 | ||
+ | |||
+ | ■CMemberVar001コンストラクタ 処理終了 | ||
+ | ■CMemberVar001コンストラクタ mf_Printプライベート関数アクセス可能 | ||
+ | CMemberVar001 プライベート メンバ関数 | ||
+ | mpub_nValue=-842150451,mpro_nValue=-842150451,m_nValue= 2000 | ||
+ | |||
+ | CMemberVar001 mf_Print関数から呼び出し | ||
+ | ★CMemberVar001 プロテクト mfpub_Print2関数 | ||
+ | ★CMemberVar001 パブリック mfpub_Print2関数 | ||
+ | |||
+ | ■CMemberVar001コンストラクタ 処理終了 | ||
+ | 1 1000 2000 | ||
+ | 0 1000 2000 | ||
+ | </syntaxhighlight> | ||
+ | といった出力になります。 |