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>
 +
といった出力になります。

2015年5月7日 (木) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス