C++ 語言中的重載、內聯、缺省參數、隱式轉換等機制展現了很多優點
阿新 • • 發佈:2018-08-02
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++ 語言中的重載、內聯、缺省參數、隱式轉換等機制展現了很多優點