C++クラスの関数リロード
クラス内の関数の再ロード関数リロード クラスのリロード リロードの意味 関数の再ロード関数リロードの本質は互いに独立した異なる関数 である. C++で関数名と関数パラメータにより関数呼び出し を決定する.は、関数名から直接リロード関数を得ることができないエントリ である.関数虫よ必ず同じ作用域で 発生する.
クラス内のリロードコンストラクタリロード(前述) 一般メンバー関数のリロード 静的メンバー関数のリロード 万変はその中から離れない:リロード関数の本質は複数の異なる関数 である.関数名およびパラメータリストは、一意の識別子 である関数のリロードは、同じ役割ドメインで発生する必要があります(グローバル関数とクラス内のメンバー関数は、同じ役割ドメインではないためリロードできません) .
出力結果は以下の通りです.
void func() void func(int v), v = 10 Test() Test(int v) Test(const Test& t) void func() static void func() void func(int v), v = 2 void func(int v), v = 2 static void func()
重荷の意味関数名による関数機能の提示 パラメータリストにより関数の使用法を提示する 拡張システムに既に存在する関数の機能
クラス内のリロード
#include
class Test
{
int i;
public:
Test()
{
i = 0;
printf("Test()
");
}
Test(int v)
{
i = v;
printf("Test(int v)
");
}
Test(const Test& t)
{
this->i = t.i;
printf("Test(const Test& t)
");
}
int getI()
{
return i;
}
static void func()
{
printf("static void func()
");
}
void func(int v)
{
printf("void func(int v), v = %d
",v);
}
};
void func()
{
printf("void func()
");
}
void func(int v)
{
printf("void func(int v), v = %d
",v);
}
int main()
{
func(); // func
func(10); // func(int v)
Test t1; //Test()
Test t2(0); //Test(int v)
Test t3 = t2; // Test t3(t2) Test(const Test& t)
func(); // func
Test::func(); // func() func()
func(2); // func(int v)
t1.func(2); // void func(int v) ,
t1.func(); // static void func()
return 0;
}
出力結果は以下の通りです.
void func() void func(int v), v = 10 Test() Test(int v) Test(const Test& t) void func() static void func() void func(int v), v = 2 void func(int v), v = 2 static void func()
重荷の意味
#include
#include
char* strcpy(char* buf, const char* str, unsigned int n)
{
return strncpy(buf, str, n);
}
int main()
{
const char* s = "Hello World!";
//char buf[16] = {0};
char buf[8] = {0}; // buf
//strcpy(buf, s); //
//strncpy(buf, s, sizeof(buf) - 1); // , , strpy
strcpy(buf , s, sizeof(buf) - 1); // strpy
printf("%s
", buf);
return 0;
}