Cpp クラス オーバーロード 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(クラス オーバーロード)
 
5行: 5行:
 
<tr>
 
<tr>
 
<td style="width:1px;"></td>
 
<td style="width:1px;"></td>
<td class="mbox-text plainlist" style="">本来の表記は「<b><span id="RealTitle" style="font-size:large;">C++ クラス オーバーロード</span></b>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。</td>
+
<td class="mbox-text plainlist" style="">本来の表記は「<b><span id="RealTitle" style="font-size:large;">C++(Cpp) クラス オーバーロード</span></b>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。</td>
 
</tr>
 
</tr>
 
</table>
 
</table>
18行: 18行:
 
<span style="color: #ffffff; background-color: #555555; padding: 0px 5px 0px 5px; display: inline-block;">cpp <span>(</span>COverloadSum.h<span>)</span></span><!-- padding 上 右 下 左-->  
 
<span style="color: #ffffff; background-color: #555555; padding: 0px 5px 0px 5px; display: inline-block;">cpp <span>(</span>COverloadSum.h<span>)</span></span><!-- padding 上 右 下 左-->  
 
<syntaxhighlight2 lang="cpp" line>
 
<syntaxhighlight2 lang="cpp" line>
 +
#ifndef __COVERLOADSUM_H_YONET__
 +
#define __COVERLOADSUM_H_YONET__
 +
 +
#if _msc_ver > 1000 //Microsoft VisualStudio C++ Ver4.0 Over Only Enable
 +
#pragma once
 +
#endif
 
class COverloadSum{
 
class COverloadSum{
 
private:
 
private:
26行: 32行:
 
public:
 
public:
 
     void COverloadSum(int iArgVal1, int iArgVal2);
 
     void COverloadSum(int iArgVal1, int iArgVal2);
     void COverloadSum(int* piArgVal);
+
     void COverloadSum(int* piArgVal, int iSizeArgVal);
     void COverloadSum(float fArgVal1, fArgVal2);
+
     void COverloadSum(float fArgVal1, float fArgVal2);
     void COverloadSum(float* pfArgVal);
+
     void COverloadSum(float* pfArgVal,int iSizeArgVal);
 
     int  Get();
 
     int  Get();
 
};
 
};
 +
#endif
 
</syntaxhighlight2>
 
</syntaxhighlight2>
 
<span style="color: #ffffff; background-color: #555555; padding: 0px 5px 0px 5px; display: inline-block;">cpp <span>(</span>COverloadSum.cpp<span>)</span></span><!-- padding 上 右 下 左-->  
 
<span style="color: #ffffff; background-color: #555555; padding: 0px 5px 0px 5px; display: inline-block;">cpp <span>(</span>COverloadSum.cpp<span>)</span></span><!-- padding 上 右 下 左-->  
 
<syntaxhighlight2 lang="cpp" line start=100>
 
<syntaxhighlight2 lang="cpp" line start=100>
 +
#include <cstdio>
 
#include "COverloadSum.h"
 
#include "COverloadSum.h"
  
 +
using namespace std;
 
void COverloadSum::COverloadSum(int iArgVal1, int iArgVal2){
 
void COverloadSum::COverloadSum(int iArgVal1, int iArgVal2){
 
     m_piData = new int[2];
 
     m_piData = new int[2];
 
     m_piData[0] = iArgVal1;
 
     m_piData[0] = iArgVal1;
 
     m_piData[1] = iArgVal2;
 
     m_piData[1] = iArgVal2;
     m_fSum( m_piData );
+
     m_fSum( m_piData, (int)sizeof(int)*2);//sizeof演算子の戻り値はsize_t型=unsigned int型です。符号を無視するキャストなので安全なキャスト。2,147,483,647より大きな数にならないこと
 
}
 
}
  
void COverloadSum::COverloadSum(int* piArgVal){
+
void COverloadSum::COverloadSum(int* piArgVal, int iSizeArgVal){
     m_fSum( m_piData );
+
     m_fSum( m_piArgVal, iSizeArgVal);
 
}
 
}
  
 
void COverloadSum::COverloadSum(float fArgVal1, float fArgVal2){
 
void COverloadSum::COverloadSum(float fArgVal1, float fArgVal2){
 
     m_piData = new int[2];
 
     m_piData = new int[2];
     m_piData[0] = (int)(fArgVal1 + 0.9);
+
     m_piData[0] = ceil(fArgVal1);
     m_piData[1] = (int)(fArgVal2 + 0.9);
+
     m_piData[1] = ceil(fArgVal2);
 +
 
 +
    m_fSum( m_piData, (int)sizeof(float)*2);
 
}
 
}
  
void COverloadSum::COverloadSum(float* pfArgVal){
+
void COverloadSum::COverloadSum(float* pfArgVal, int iSizeArgVal){
     for(int iScan = 0; i < sizeof(float)/sizeof(pfArgVal); iScan++){
+
     for(int iScan = 0; i < iSizeArgVal / (int)sizeof (float) ; iScan++){
 
         m_piData[iScan] = pfArgVal[iScan];
 
         m_piData[iScan] = pfArgVal[iScan];
 
     }
 
     }
     m_fSum( m_piData );
+
     m_fSum( m_piData, iSizeArgVal);
 
}
 
}
  
void mf_Sum(int* piArgVal){
+
void mf_Sum(int* piArgVal, int iSizeArgVal){
     for(int iScan = 0; i < sizeof(int)/sizeof(piArgVal); iScan++){
+
     for(int iScan = 0; i < iSizeArgVal / (int)sizeof(int) ; iScan++){
 
         m_iSum = m_iSum + piArgVal[iScan];
 
         m_iSum = m_iSum + piArgVal[iScan];
 
     }
 
     }
73行: 84行:
 
<span style="color: #ffffff; background-color: #555555; padding: 0px 5px 0px 5px; display: inline-block;">cpp <span>(</span>OverloadSumMain.cpp<span>)</span></span><!-- padding 上 右 下 左-->  
 
<span style="color: #ffffff; background-color: #555555; padding: 0px 5px 0px 5px; display: inline-block;">cpp <span>(</span>OverloadSumMain.cpp<span>)</span></span><!-- padding 上 右 下 左-->  
 
<syntaxhighlight2 lang="cpp" line start=200>
 
<syntaxhighlight2 lang="cpp" line start=200>
#include <stdio>
+
#include <cstdio>
 +
#include "COverloadSum.h"
 +
 
 +
using namespace std;
 
int main(){
 
int main(){
 
     COverloadSum objCOverloadSum_Int_Int(5, 5);
 
     COverloadSum objCOverloadSum_Int_Int(5, 5);
79行: 93行:
  
 
     int piDataArr[4] = { 3, 7, 9, 10 };
 
     int piDataArr[4] = { 3, 7, 9, 10 };
     COverloadSum objCOverloadSum_pInt(piDataArr);
+
     COverloadSum objCOverloadSum_pInt(piDataArr, (int)sizeof(piDataArr));
  
     float pfDataDataArr[5] = { 3.2, 5.4, 8.2, 13.4, 42.5 };
+
     float pfDataArr[5] = { 3.2, 5.4, 8.2, 13.4, 42.5 };
     COverloadSum objCOverloadSum_pFloat(pfDataArr);
+
     COverloadSum objCOverloadSum_pFloat(pfDataArr, (int)sizeof(pfDataArr));
  
 
     printf("IntInt=%d, pInt=%d, FloatFloat=%d, pFloat=%d,\n",
 
     printf("IntInt=%d, pInt=%d, FloatFloat=%d, pFloat=%d,\n",
97行: 111行:
 
<syntaxhighlight2 lang="cpp">
 
<syntaxhighlight2 lang="cpp">
 
     void COverloadSum(int iArgVal1, int iArgVal2);
 
     void COverloadSum(int iArgVal1, int iArgVal2);
     void COverloadSum(int* piArgVal);
+
     void COverloadSum(int* piArgVal, int iSizeArgVal);
     void COverloadSum(float fArgVal1, fArgVal2);
+
     void COverloadSum(float fArgVal1, float fArgVal2);
     void COverloadSum(float* pfArgVal);
+
     void COverloadSum(float* pfArgVal,int iSizeArgVal);
 
</syntaxhighlight2>
 
</syntaxhighlight2>
  
105行: 119行:
  
 
=== '''102行目~131行目(クラスプログラム部)''' ===
 
=== '''102行目~131行目(クラスプログラム部)''' ===
 そうして、具体的な処理内容を記述します。ここではint型の2つの引数を受け取る関数はint型の配列関数にしてint型の配列を全て足し合わせる関数を読んでいます。m_fSum関数はすべてのオーバーロード関数から呼び出されるプライベートなクラスです。int型配列を受け取る関数はそのままm_Sumへ受け流す感じになり、float型はint型に変換+小数点以下の切り上げという方法を実施して足しています。float型配列を受け取る関数はそれぞれをint型に変換しつつ、受け渡すためのint配列を構成します。
+
 そうして、具体的な処理内容を記述します。ここではint型の2つの引数を受け取る関数はint型の配列関数にしてint型の配列を全て足し合わせる関数を読んでいます。m_fSum関数はすべてのオーバーロード関数から呼び出されるプライベートなクラスです。int型配列を受け取る関数はそのままm_fSumへ受け流す感じになり、float型はint型に変換+小数点以下の切り上げという方法を実施して足しています。float型配列を受け取る関数はそれぞれをint型に変換しつつ、受け渡すためのint配列を構成します。
  
  
112行: 126行:
  
 
 まぁでも疲れる。まじで疲れる。このサンプルプログラムも疲れる。そういうことです。あんまり使いたくないなぁ。最低限の技術しか使おうとしない自分のような、さぼりプログラマには敷居が少し高いな。飲食店の入り口がマンションのドアみたいになっている店くらい敷居が高い。
 
 まぁでも疲れる。まじで疲れる。このサンプルプログラムも疲れる。そういうことです。あんまり使いたくないなぁ。最低限の技術しか使おうとしない自分のような、さぼりプログラマには敷居が少し高いな。飲食店の入り口がマンションのドアみたいになっている店くらい敷居が高い。
 +
 +
 +
 この記事のプログラムでは、ヘッダファイルの読み込みを少し念入りに書きました。いろんな記事を読んでいる内に忘れてしまうこともあると思いますが、#pragma once はマイクロソフト独自の技術で、Ver4.0以上で使えるものだからです。他のコンパイラでも使えることもありますが、バグを持っていたりと不完全なこともあるため、使わない方がいいとも言われています。インクルードガードも使っていますが、この方法で読み込みが避けられたとしても、#pragma onceで読み込まれない方が遥かにコンパイル速度が速くなります。
 +
  
 
[[C PlusPlus#C++からの技術|C++]]に戻る
 
[[C PlusPlus#C++からの技術|C++]]に戻る

2021年2月6日 (土) 00:00時点における最新版



個人用ツール
名前空間

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