1. 程式人生 > >C++ 語言中的重載、內聯、缺省參數、隱式轉換等機制展現了很多優點

C++ 語言中的重載、內聯、缺省參數、隱式轉換等機制展現了很多優點

str 指針 div sin code console etc 聲明 隱患

C++ 語言中的重載、內聯、缺省參數、隱式轉換等機制展現了很多優點,但是這些 優點的背後都隱藏著一些隱患。正如人們的飲食,少食和暴食都不可取,應當恰到好處。 我們要辨證地看待 C++的新機制,應該恰如其分地使用它們。

雖然這會使我們編程時多 費一些心思,少了一些痛快,但這才是編程的藝術。

 1 #include <iostream>
 2 
 3 /* run this program using the console pauser or add your own getch, system("pause") or input loop */
 4 using namespace std;
5 int main(int argc, char** argv) { 6 //定義一個包含指針成員的結構類型 7 struct test { 8 char *str; 9 int *ip; 10 } x; 11 12 //使用結構變量x中的整型指針ip 13 x.ip=new int; //分配1個單元 14 *(x.ip)=100; 15 cout<<"x.ip:"<<x.ip<<\t<<*(x.ip)<<endl; 16 cout<<"
---------------"<<endl; 17 delete x.ip; 18 x.ip=new int[5]; //分配5個單元 19 for(int i=0;i<5;i++) 20 *(x.ip+i)=100+i; 21 cout<<"x.ip:"<<endl; 22 for(int i=0;i<5;i++) 23 cout<<x.ip+i<<\t<<(*(x.ip+i))<<endl; 24 delete x.ip;
25 cout<<"---------------"<<endl; 26 27 //使用結構變量x中的字符型指針str 28 x.str=new char(A); //分配1個單元 29 cout<<"x.str:"<<(*x.str)<<endl; 30 cout<<"---------------"<<endl; 31 delete x.str; 32 x.str=new char[5]; //分配多個單元 33 *x.str=G; 34 *(x.str+1)=o; 35 *(x.str+2)=o; 36 *(x.str+3)=d; 37 *(x.str+4)=\0; 38 cout<<"x.str:"<<x.str<<endl; 39 delete x.str; 40 cout<<"---------------"<<endl; 41 42 //在聲明結構變量時初始化 43 test y={"Very Good!",NULL}; 44 cout<<"y.str:"<<y.str<<endl; 45 cout<<"y.ip:"<<y.ip<<endl; 46 return 0; 47 }

C++ 語言中的重載、內聯、缺省參數、隱式轉換等機制展現了很多優點