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> | ||
21行: | 21行: | ||
#define __COVERLOADSUM_H_YONET__ | #define __COVERLOADSUM_H_YONET__ | ||
+ | #if _msc_ver > 1000 //Microsoft VisualStudio C++ Ver4.0 Over Only Enable | ||
#pragma once | #pragma once | ||
+ | #endif | ||
class COverloadSum{ | class COverloadSum{ | ||
private: | private: | ||
30行: | 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(); | ||
}; | }; | ||
39行: | 41行: | ||
<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_fSum( m_piArgVal, iSizeArgVal); |
} | } | ||
56行: | 60行: | ||
m_piData[0] = ceil(fArgVal1); | m_piData[0] = ceil(fArgVal1); | ||
m_piData[1] = ceil(fArgVal2); | 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 < | + | 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 < | + | for(int iScan = 0; i < iSizeArgVal / (int)sizeof(int) ; iScan++){ |
m_iSum = m_iSum + piArgVal[iScan]; | m_iSum = m_iSum + piArgVal[iScan]; | ||
} | } | ||
87行: | 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 | + | 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", | ||
105行: | 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> | ||
120行: | 126行: | ||
まぁでも疲れる。まじで疲れる。このサンプルプログラムも疲れる。そういうことです。あんまり使いたくないなぁ。最低限の技術しか使おうとしない自分のような、さぼりプログラマには敷居が少し高いな。飲食店の入り口がマンションのドアみたいになっている店くらい敷居が高い。 | まぁでも疲れる。まじで疲れる。このサンプルプログラムも疲れる。そういうことです。あんまり使いたくないなぁ。最低限の技術しか使おうとしない自分のような、さぼりプログラマには敷居が少し高いな。飲食店の入り口がマンションのドアみたいになっている店くらい敷居が高い。 | ||
+ | |||
+ | |||
+ | この記事のプログラムでは、ヘッダファイルの読み込みを少し念入りに書きました。いろんな記事を読んでいる内に忘れてしまうこともあると思いますが、#pragma once はマイクロソフト独自の技術で、Ver4.0以上で使えるものだからです。他のコンパイラでも使えることもありますが、バグを持っていたりと不完全なこともあるため、使わない方がいいとも言われています。インクルードガードも使っていますが、この方法で読み込みが避けられたとしても、#pragma onceで読み込まれない方が遥かにコンパイル速度が速くなります。 | ||
+ | |||
[[C PlusPlus#C++からの技術|C++]]に戻る | [[C PlusPlus#C++からの技術|C++]]に戻る |