我們知道C++中非常重要的:1.全域函式、2.普通成員函式、3.靜態成員函式,
類中的成員函式構成的多載有這幾點:
1. 建構式的多載,
2.普通成員函式的多載,
3.靜態成員函式的多載,
例子:
1 #include <stdio.h> 2 3 class Test 4 { 5 int i; 6 public: 7 Test() 8 { 9 printf("Test::Test()\n"); 10 this->i = 0; 11 } 12 13 Test(int i) 14 { 15 printf("Test::Test(int i)\n"); 16 this->i = i; 17 } 18 19 Test(const Test& obj) // 三個建構式之間也構成了多載,這是拷貝建構式; 20 { 21 printf("Test(const Test& obj)\n"); 22 this->i = obj.i; 23 } 24 25 static void func() 26 { 27 printf("void Test::func()\n"); 28 } 29 30 void func(int i) // 和上面的靜態成員函式構成多載; 31 { 32 printf("void Test::func(int i), i = %d\n", i); 33 } 34 35 int getI() 36 { 37 return i; 38 } 39 }; 40 41 void func() 42 { 43 printf("void func()\n"); 44 } 45 46 void func(int i) 47 { 48 printf("void func(int i), i = %d\n", i); 49 } 50 51 int main() 52 { 53 func(); 54 func(1); 55 56 Test t; // Test::Test(); 57 Test t1(1); // Test::Test(int i); 58 Test t2(t1); // Test(const Test& obj); 59 60 func(); // void func(); 61 Test::func(); // void Test::func(); 62 63 func(2); // void func(int i), i = 2; 64 t1.func(2); // void Test::func(int i), i = 2; 65 t1.func(); // void Test::func(); 66 67 return 0; 68 }
注意:
三種函式的本質不同,
普通成員函式和靜態成員函式之間可以構成多載,
普通成員函式和靜態成員函式在同一個作用域(不區分記憶體類別)中,
類的成員函式和全域函式不能構成多載,不在同一個作用域中,
總結:
1,類的成員函式之間可以進行多載;
2,多載必須發生在同一個作用域中;
3,全域函式和成員函式不能構成多載關系;
4,多載的意義在于擴展已經存在的功能;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/51083.html
標籤:C++
上一篇:L1-014 簡單題 (5分)
下一篇:暴力+輾轉相除法——N個數求和
