學習C++筆記(引用、const、iterator)

來源:互聯網
上載者:User
1.const引用

1.1.非const引用,只能綁定到同類型對象;

1.2.const引用,咋可以綁定到不同但相關的類型的對象,或綁定到右值;

double a = 3.14;const int &b = a; //right
2.const與iterator

 2.1. const_iterator: 唯讀容器內元素;

for(vector<string>::const_iterator iter = text.bgin(); iter != text.end(); ++iter)cout<<*iter<<endl; //right*iter=" "; //wrong

 2.2. const與iterator一起使用則是說明迭代器不能修改,但內容可以;

vector<int> num(10);const vector<int>::iterator iter = num.begin();*iter=1; //right++iter;  //wrong

 

  2.3. 任何改變vector的操作都會使已有的迭代器失效,例如: push_back.

 

3.const與指標

 3.1指向const對象的指標

const double *cptr;
*cptr = 42; //error: 不能通過cptr修改其所指對象的值,但可可以使其指向另一個const對象const double pi = 3.14;double *ptr = pi // error:ptr是普通指標const double *cptr = &pi //right: cptr是指向const對象的指標

不能使用void*指標儲存const對象的地址,而必須使用const void*類型的指標儲存const對象的地址

const int universe = 42;const void *cpv = &universe: //rightvoid *pv = &universe;//wrong

允許把非const對象的地址賦給const對象的指標

double dval = 3.14;cptr = &dval;//ok:但是任何通過cptr修改其值的行為,都會導致編譯錯誤

可以將指向const的指標理解為“自以為指向const的指標”

 3.2 const指標(本身不能修改)

int Num = 0; int *const Num_constp = &Num;//Num_constp是const指標

任何給const指標賦值(即使是相同值)的行為都會導致編譯錯誤(與任何const量一樣,const指標必須在定義時初始化):


 Num_constp;//error

指標所指向對象的值可以修改

*Num_constp = 0;//right;只要符合該對象的類型

3.3 指向const對象的const指標(都不許改)

const double pi = 3.14; const double *const pi_ptr = &pi

3.4 typedef和const指標

const pstring cstr;

cstr是什麼類型呢?

const string *cstr;//wrong;因為const修飾的是一個類型; srting *const cstr;//right

難以理解是因為const限定符的位置既可以放在類型前也可以放在類型後;

string const s1; const string s2;//二者類型相同

對於typedef

string s; typedef string *pstring; //三種形式都代表指向string類型的const指標 const pstring cstr1 = &s; pstring const cstr2 = &s;//容易理解 string *const cstr3 = &s;

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.