C++クラスの関数リロード

11631 ワード

クラス内の関数の再ロード
  • 関数リロード
  • クラスのリロード
  • リロードの意味
  • 関数の再ロード
  • 関数リロードの本質は互いに独立した異なる関数
  • である.
  • C++で関数名と関数パラメータにより関数呼び出し
  • を決定する.
  • は、関数名から直接リロード関数を得ることができないエントリ
  • である.
  • 関数虫よ必ず同じ作用域で
  • 発生する.
    クラス内のリロード
  • コンストラクタリロード(前述)
  • 一般メンバー関数のリロード
  • 静的メンバー関数のリロード
  • 万変はその中から離れない:
  • リロード関数の本質は複数の異なる関数
  • である.
  • 関数名およびパラメータリストは、一意の識別子
  • である
  • 関数のリロードは、同じ役割ドメインで発生する必要があります(グローバル関数とクラス内のメンバー関数は、同じ役割ドメインではないためリロードできません)
  • .
    #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; }