Cpp クラス メンバ関数 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(クラス メンバ関数)
(クラス メンバ関数)
42行: 42行:
 
void CMemberVar001::mf_Print(void){
 
void CMemberVar001::mf_Print(void){
 
   printf("CMemberVar001 プライベート メンバ関数\n");
 
   printf("CMemberVar001 プライベート メンバ関数\n");
   printf("mpub_nValue=%d,mpro_nValue=%d,m_nValue=%d\n",mpub_nValue, mpro_nValue, m_nValue);
+
   printf("mpub_nValue=%10d,mpro_nValue=%10d,m_nValue=%10d\n",mpub_nValue, mpro_nValue, m_nValue);
  
 
   printf("\n");
 
   printf("\n");
53行: 53行:
 
void CMemberVar001::mfpro_Print(void){
 
void CMemberVar001::mfpro_Print(void){
 
   printf("CMemberVar001 プロテクト  メンバ関数\n");
 
   printf("CMemberVar001 プロテクト  メンバ関数\n");
   printf("mpub_nValue=%d,mpro_nValue=%d,m_nValue=%d\n",mpub_nValue, mpro_nValue, m_nValue);
+
   printf("mpub_nValue=%10d,mpro_nValue=%10d,m_nValue=%10d\n",mpub_nValue, mpro_nValue, m_nValue);
  
 
   printf("\n");
 
   printf("\n");
63行: 63行:
 
void CMemberVar001::mfpub_Print(void){
 
void CMemberVar001::mfpub_Print(void){
 
   printf("CMemberVar001 パブリック  メンバ関数\n");
 
   printf("CMemberVar001 パブリック  メンバ関数\n");
   printf("mpub_nValue=%d,mpro_nValue=%d,m_nValue=%d\n",mpub_nValue, mpro_nValue, m_nValue);
+
   printf("mpub_nValue=%10d,mpro_nValue=%10d,m_nValue=%10d\n",mpub_nValue, mpro_nValue, m_nValue);
  
 
   printf("\n");
 
   printf("\n");
83行: 83行:
 
CMemberVar001::CMemberVar001(void)
 
CMemberVar001::CMemberVar001(void)
 
{
 
{
 +
  printf("■CMemberVar001コンストラクタ mf_Printプライベート関数アクセス可能\n");
 +
  m_nValue = 2000;
 +
  mf_Print();
 +
  printf("■CMemberVar001コンストラクタ 処理終了\n");
 
}
 
}
  
94行: 98行:
  
  
続きはまた今度…
+
それで、新しく以下のような派生クラスを作りました。派生クラスの作り方は[[Cpp クラス アクセス指定子|アクセス指定子]]の項目で中盤あたりに画像を貼って説明しました。よくわからない人は、もどって確かめてください。
 +
 
 +
MemberFunc001.h
 +
<syntaxhighlight lang="cpp" line start="1">
 +
#pragma once
 +
#include "membervar001.h"
 +
class CMemberFunc001 :
 +
  public CMemberVar001
 +
{
 +
public:
 +
  void mfpub_DerivationPrint(void);
 +
  CMemberFunc001(void);
 +
  ~CMemberFunc001(void);
 +
};
 +
 
 +
 
 +
</syntaxhighlight>
 +
MemberFunc001.cpp
 +
<syntaxhighlight lang="cpp" line start="1">
 +
#include "stdafx.h"
 +
#include "MemberFunc001.h"
 +
 
 +
void CMemberFunc001::mfpub_DerivationPrint(void){
 +
  //mf_nValue;★privateで定義された領域にある変数にはアクセスできない。
 +
  //mf_Print();★privateで定義された領域にある関数にはアクセスできない。
 +
 
 +
  mpro_nValue = 1100;//★protectedで定義された領域にある変数は呼び出せる。
 +
  mfpro_Print();//★protectedで定義された領域にある関数は呼び出せる。
 +
}
 +
CMemberFunc001::CMemberFunc001(void)
 +
{
 +
}
 +
 
 +
 
 +
CMemberFunc001::~CMemberFunc001(void)
 +
{
 +
}
 +
 
 +
</syntaxhighlight>
 +
と言う具合にプログラムを追記しました。しれっとMemberVar001.cppもメンバ変数の記事での内容から少し変更しました。
 +
 
 +
 
 +
そして、メインプログラムを以下のように記述して利用します。派生クラスを使った分だけ出力も多くなりました。なんだか複雑な動きをしているように感じますが、どういう風に動作したのかは、あとで解説をつけたいと思います。
 +
 
 +
 
 +
sample_main.cpp
 +
<syntaxhighlight lang="cpp" line start="1">
 +
#include "stdafx.h"
 +
#include "MemberVar001.h"
 +
#include "MemberFunc001.h"
 +
 
 +
int _tmain(int argc, _TCHAR* argv[])
 +
{
 +
  CMemberVar001*  CMemberVar001_Instance = new  CMemberVar001;
 +
 
 +
  CMemberVar001_Instance->mpub_nValue = 100;
 +
  CMemberVar001_Instance->mfpub_Print();
 +
 
 +
 
 +
  printf("★★ここから継承クラスの利用\n");
 +
  CMemberFunc001* CMemberFunc01_Instance = new CMemberFunc001;
 +
  CMemberFunc01_Instance->mpub_nValue = 1000;
 +
  CMemberFunc01_Instance->mfpub_Print();
 +
  printf("★★★継承クラス内の関数呼び出し\n");
 +
  CMemberFunc01_Instance->mfpub_DerivationPrint();
 +
  printf("★★ここまで継承クラスの利用\n");
 +
 
 +
  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 パブリック  メンバ関数
 +
mpub_nValue=      100,mpro_nValue=-842150451,m_nValue=      2000
 +
 
 +
CMemberVar001 mfpub_Print関数から呼び出し
 +
★CMemberVar001 プライベート mfpub_Print2関数
 +
★CMemberVar001 プロテクト  mfpub_Print2関数
 +
 
 +
★★ここから継承クラスの利用
 +
■CMemberVar001コンストラクタ mf_Printプライベート関数アクセス可能
 +
CMemberVar001 プライベート メンバ関数
 +
mpub_nValue=-842150451,mpro_nValue=-842150451,m_nValue=      2000
 +
 
 +
CMemberVar001 mf_Print関数から呼び出し
 +
★CMemberVar001 プロテクト  mfpub_Print2関数
 +
★CMemberVar001 パブリック  mfpub_Print2関数
 +
 
 +
■CMemberVar001コンストラクタ 処理終了
 +
CMemberVar001 パブリック  メンバ関数
 +
mpub_nValue=      1000,mpro_nValue=-842150451,m_nValue=      2000
 +
 
 +
CMemberVar001 mfpub_Print関数から呼び出し
 +
★CMemberVar001 プライベート mfpub_Print2関数
 +
★CMemberVar001 プロテクト  mfpub_Print2関数
 +
 
 +
★★★継承クラス内の関数呼び出し
 +
CMemberVar001 プロテクト  メンバ関数
 +
mpub_nValue=      1000,mpro_nValue=      1100,m_nValue=      2000
 +
 
 +
CMemberVar001 mfpro_Print関数から呼び出し
 +
★CMemberVar001 プライベート mfpub_Print2関数
 +
★CMemberVar001 パブリック  mfpub_Print2関数
 +
 
 +
★★ここまで継承クラスの利用
 +
</syntaxhighlight>

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



個人用ツール
名前空間

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