C++ 类中的函数重载
我们知道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,重载的意义在于扩展已经存在的功能;