ccsun40 :cpp % cat -n mannew.h 1 //Interface file for "mankind" and "animal" classes 2 class animal { 3 int pv1; 4 float pv2; 5 protected: 6 int pt1[5]; 7 public: 8 animal(int = 38); 9 float pb1; 10 int pb2[9]; 11 void talk(void); 12 }; 13 14 class mankind:public animal{ 15 char * pv3; 16 public: 17 mankind(char * ="NoName"); // Constructor 18 ~mankind(); // Destructor 19 int pb3[8]; 20 void talk(void); 21 }; ccsun40 :cpp % cat -n manlib.C 1 // Implementation file for "animal" and "mankind" 2 #include 3 #include 4 #include "mannew.h" 5 animal::animal(int x){ 6 pv1=x; 7 pv2=45.67; 8 this->pb1=135.246; 9 for (int i=0; i<9; i++) pb2[i]=i+1; 10 //pb2={ 1,2,3,4,5,6,7 ,8,9}; 11 cout<<" Animal shows up\n"; 12 }; 13 void animal::talk(void) 14 { 15 cout << " animal talk, pv1=" << dec <pv3 << " is dying \n"; 26 } 27 void mankind::talk(void) 28 { 29 // cout << " mankind talk, pv1=" << pv1 <<"\n"; 30 // cout << " mankind talk, pb2=" << pb2 <<"\n"; 31 // cout << " mankind talk, pb2=" << animal::pb2 <<"\n"; 32 cout << " mankind talk, pb2[0]=" << pb2[0] <<"\n"; 33 cout << " mankind talk, pv3=" << pv3 <<"\n"; 34 cout << " mankind talk, pb3[3]=" << pb3[3] <<"\n"; 35 }; ccsun40 :cpp % g++ -c manlib.C (此會生出 manlib.o) (如果你願意, 可將之做成 library, 則 manlib.C 就不用給人家 見下一頁最後) ccsun40 :cpp % cat -n mannew.C 1 #include 2 #include 3 #define call 4 #include "mannew.h" 5 6 animal aa1(123),aa2(456); 7 mankind * mm1, *mm2; 8 void onlyasub(void) 9 { mankind nobody; 10 cout << " Now in routine onlyasub\n"; 11 } 12 main(){ 13 aa1.talk(); 14 cout << "Welcome to C++\n"; 15 call onlyasub(); 16 mm1= new mankind("Chang-3"); 17 mm2= new mankind("Lee-4"); 18 cout << "mm1->pb1=" << mm1->pb1 << "\n"; 19 cout << " (Let mm1 talk)\n"; 20 mm1->talk(); 21 delete mm2; 22 cout << " (and then Let mm1 talk by animal method)\n"; 23 mm1->animal::talk(); 24 return(0); 25 } ccsun40 :cpp % g++ mannew.C manlib.o ccsun40 :cpp % a.out Animal shows up Animal shows up animal talk, pv1=123=0x7b pv2=45.67 pb1=135.246 pb2[6]=7 Welcome to C++ Animal shows up mankind NoName appears Now in routine onlyasub %%% mankind NoName is dying Animal shows up mankind Chang-3 appears Animal shows up mankind Lee-4 appears mm1->pb1=135.246 (Let mm1 talk) mankind talk, pb2[0]=1 mankind talk, pv3=Chang-3 mankind talk, pb3[3]=7fffffe %%% mankind Lee-4 is dying (and then Let mm1 talk by animal method) animal talk, pv1=38=0x26 pv2=45.67 pb1=135.246 pb2[6]=7 ccsun40 :cpp % exit 如何在Unix上造library? very simple, 例如: g++ -c manlib.C (翻譯出 manlib.o) ar r libanim.a manlib.o (archive 造出 Library libanim.a ) ranlib libanim.a (使它 link 時較快) 阿這樣用: g++ mannew.C -L. -lanim ( -L. 表示要在 current working directory 找 library, -lanim 表示要找的 library 名為 libanim.a ) (For more information, see "man ar" and "man ranlib")