一、c++的引用變量
初學c++便接觸到了引用變量,定義類型為整型時:
int a;int &b=a;表示將b定義為一個引用變量,引用了a的數值,同時b與a的地址值相同,如果改變b的數值,a,b的數值也會改變,但是作為引用變量b的地址值不會改變,同時引用變量與指針有著相似性,但是卻是不同的,有著不同的特性。以下程序作為對比分析:#include<iostream>using namespace std;int main(){ int a,b; int &c=a; int *q; q=&a; a=1; b=2; cout<<c<<endl; cout<<*q<<endl; cout<<&c<<endl; cout<<q<<endl; q=&b; c=b;//將b=2賦 給c cout<<a<<endl;//a變為2 cout<<c<<endl; cout<<*q<<endl; cout<<&c<<endl;//引用變量的地址不會改變,仍為a的原地址 cout<<q<<endl; return 0; }運行結果如圖。由此可見c,*q是一個具體的數值,而&c,q是地址值,當使q指向b后,q的地址變為b的地址,a的值不會改變,令c引用b后,a,c的值都發生變化,但c的地址卻依舊是a的地址。這便是引用變量的相關內容。
二 、關于命名空間
c++中考慮到可能會有重名的變量,函數等,設置了命名空間的概念,例如,在c++中當使用<iostream.h>時,相當于在c中調用庫函數,使用的是全局命名空間,也就是早期的c++實現;當使用<iostream>的時候,該頭文件沒有定義全局命名空間,必須使用namespace std;這樣才能正確使用cout。
這便是using namespace std的用處,std指的是標準庫相關的標識符,C++標準程序庫中的所有標識符都被定義于一個名為std的namespace中。
同時,namespace也可以由用戶自定義,以下代碼用來說明namespace的意義:
//DISPLAYNamespaceDemonstration#include <iostream>using namespace std ;namespace savitch1 { void greeting();}namespace savitch2 { void greeting();}void big_greeting();int main(){ { using namespace savitch2 ; //使用savictch2、std、全局三個命名空間 greeting(); } { using namespace savitch1 ; //使用savitch1、std、全局三個命名空間 greeting(); } big_greeting(); //使用了std和全局兩個命名空間 return 0 ;}namespace savitch1 { void greeting() { cout<<"Hellofromnamespacesavitch1./n" ; }}namespace savitch2 { void greeting() { cout<<"Greetingsfromnamespacesavitch2./n" ; }}void big_greeting(){ cout<<"ABigGlobalHello!/n" ;}同時也可改為如下用法://DISPLAYNamespaceDemonstration#include <iostream>using namespace std ;namespace savitch1 { void greeting();}namespace savitch2 { void greeting();}void big_greeting();int main(){ { //使用savictch2、std、全局三個命名空間 savitch2::greeting(); } { //使用savitch1、std、全局三個命名空間 savitch1::greeting(); } big_greeting(); //使用了std和全局兩個命名空間 return 0 ;}namespace savitch1 { void greeting() { cout<<"Hellofromnamespacesavitch1./n" ; }}namespace savitch2 { void greeting() { cout<<"Greetingsfromnamespacesavitch2./n" ; }}void big_greeting(){ cout<<"ABigGlobalHello!/n" ;}
|
新聞熱點
疑難解答
圖片精選