const修飾虛函數

【1】程序1ios

 1 #include <iostream>
 2 using namespace std;  3 
 4 class Base  5 {  6 public:  7     virtual void print() const = 0;  8 };  9 
10 class Test : public Base 11 { 12 public: 13     void print(); 14 }; 15 
16 void Test::print() 17 { 18     cout << "Test::print()" << endl; 19 } 20 
21 void main() 22 { 23     // Base* pChild = new Test(); //compile error! 24     // pChild->print();
25 }

【2】程序2函數

 1 #include <iostream>
 2 using namespace std;  3 
 4 class Base  5 {  6 public:  7     virtual void print() const = 0;  8 };  9 
10 class Test : public Base 11 { 12 public: 13     void print(); 14     void print() const; 15 }; 16 
17 void Test::print() 18 { 19     cout << "Test::print()" << endl; 20 } 21 
22 void Test::print() const
23 { 24     cout << "Test::print() const" << endl; 25 } 26 
27 void main() 28 { 29     Base* pChild = new Test(); 30     pChild->print(); 31 } 32 /*
33 Test::print() const 34 */

【3】程序3spa

 1 #include <iostream>
 2 using namespace std;  3 
 4 class Base  5 {  6 public:  7     virtual void print() const = 0;  8 };  9 
10 class Test : public Base 11 { 12 public: 13     void print(); 14     void print() const; 15 }; 16 
17 void Test::print() 18 { 19     cout << "Test::print()" << endl; 20 } 21 
22 void Test::print() const
23 { 24     cout << "Test::print() const" << endl; 25 } 26 
27 void main() 28 { 29     Base* pChild = new Test(); 30     pChild->print(); 31 
32     const Test obj; 33  obj.print(); 34 
35  Test obj1; 36  obj1.print(); 37 
38     Test* pOwn = new Test(); 39     pOwn->print(); 40 } 41 
42 /*
43 Test::print() const 44 Test::print() const 45 Test::print() 46 Test::print() 47 */

備註:一切皆在代碼中。code

總結:const修飾成員函數,也屬於函數重載的一種範疇。blog

Good Good Study,  Day  Day  Up.io

順序  選擇  循環  總結class

相關文章
相關標籤/搜索