for(auto &i:s)和for(auto i:s)區別

一、for(auto &i:s)和for(auto i:s)區別
代碼1:

#include<iostream>
#include<string>
using namespace std;
string s = "hello";
for (auto &i : s ) //i是個引用 i到底引用的是什麼?
	i = toupper(i); //改變成大寫,影響s的值
	cout<<s<<endl; //s的值是 HELLO

代碼2:

#include<iostream>
#include<string>
using namespace std;
string s = "hello";
for (auto i : s ) //書上說i 是char類型,那s[n]呢?
	i = toupper(i); //改變成大寫,不影響s的值
	cout<<s<<endl; //s的值是 hello

二、auto 、static
auto 的對應類型不是使用 new 出來的變量,也不是static變量
auto 變量在函數結束時即釋放了,再次調用這個函數時,又重新定義了一個新的變量。
static 變量是程序結束的時候才釋放對象的,但它不需要手動釋放。
static 如果在一個函數內申明,這每次進入這個函數時,還是使用第一次聲明的變量,並且還保存的上次使用的值。
static 變量如果在結構和類中使用,這結構或類定義的一切對象,都將共享唯一 static 變量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章