c++程式語言中,對於常量的引用是乙個非常重要的應用技巧。在這篇文章中,我們將會為大家詳細介紹一下有關c++常量引用的相關應用方法,相信大家可以從中學到很多知識。
如果是對乙個常量進行引用,則編譯器首先建立乙個臨時變數,然後將該常量的值置入臨時變數中,對該引用的操作就是對該臨時變數的操作。對c++常量引用可以用其它任何引用來初始化;但不能改變。
關於引用的初始化有兩點值得注意:
(1)當初始化值是乙個左值(可以取得位址)時,沒有任何問題;
(2)當初始化值不是乙個左值時,則只能對乙個const t&(常量引用)賦值。而且這個賦值是有乙個過程的:
首先將值隱式轉換到型別t,然後將這個轉換結果存放在乙個臨時物件裡,最後用這個臨時物件來初始化這個引用變數。在這種情況下,const t&(常量引用)過程中使用的臨時物件會和const t&(常量引用)共存亡。
例子:
double& dr = 1; // 錯誤:需要左值第二句實際的過程如下:const double& cdr = 1; // ok
double temp = double(1);作函式引數時:const double& cdr = temp;
// bc_temp_objects_not_bound_to_nonconst_ref.cpp結果:// compile with: /ehsc
#include "iostream"
using namespace std;
class c {};
void f(c & c)
void f(c const & c)
int main()
c const &
更直接的,用基本型別:
#include <通過c++常量引用從函式返回乙個區域性物件:iostream
>
using namespace std;
void display(int const &ref)
int main()
一般從乙個函式返回乙個區域性物件的引用是不對的:
t & my_op ( void )特殊情況:返回乙個常引用// the t object t got destroyed here so the
returned reference is not valid anymore.
const t & my_op ( void )在這個情況下,區域性變數 t 不會被直接析構,而是會保留到 my_t_obj 的生命週期結束為止。const t & my_t_obj = my_op ();
總之,c++常量引用語法上可以引用乙個臨時變數。這種方法在使用引用作函式引數和返回區域性變數時有意義。我目前看來常量引用主要用在作函式引數或保證不修改原變數的時候。
注釋:最後再舉例說明一下,
int& rint = 12; //錯誤
const int& rint =12;//正常編譯通過
引用rint指向編譯器隱式分配記憶體並建立的匿名int型別臨時物件。對rint引用的任何操作都會影響匿名臨時物件,而不會影響常量12.同時編譯器也會確保這樣的匿名臨時物件會將生命期擴充套件到初始化後的引用存在的全部時域。看下面的**
short s = 123;
const int& rint = s;
s = 321;
const int* ip = &rint;
printf("rint is %d ,s is %d \n",rint,s);
printf("ip is %d ,&s is %d \n",ip,&s);
輸出結果:
rint is 123,s is 321
ip is 2030760 &s is 2030764
可以看出rint應用預設值並不是s,而是常量引用初始化過程中隱式使用的匿名物件。但是這裡看以看出來從s到rint是經過隱式轉化的,若果將short修改為int 那麼就不會出現上面的情況
const使用方法
const 定義常變數,不能寫,只能讀。const修飾指標 const char src 不允許修改形參的值。const要點 1 限定寫許可權,將變數變為唯讀。2 資料型別對const來說是透明的 const int cb 10 int const cb 10 3 const用於封鎖直接修飾的內容,...
const的使用方法
const 定義乙個常量型別。例如 定義常量時,const和常量型別的位置可以調整,結果一樣。為常量賦值的時候必須在定義常量的同時進行。const主要運用在指標中,分別有三種情況 這兩種表示方法的意思是一樣的,都指允許修改指標p的位址但不可以解引用也就是,不可以通過指標p修改位址所指的變數。例如 可...
Const 使用方法總結
const 使用方法總結 const限定符的特點在於 強制最低訪問權原則。用這個原則正確的設計軟體可大大減少除錯時間和不良 並且能夠使程式易於修改和除錯。給函式傳遞的指標有如下四種情況 指向非常量資料的非常量指標 指向非常量資料的常量指標 指向常量資料的非常量指標 指向常量資料的常量指標 1 如果傳...