2 回答

TA貢獻1812條經(jīng)驗 獲得超5個贊
Node (const T& item, Node<T>* ptrnext = NULL);
中的 const T& item:
你也許會疑惑為什么這里會用const
首先 看看后面?zhèn)鞯?T& item 是傳的參數(shù)的一個引用
意味著在函數(shù)里改變item的值會影響到實參的值
而這個是程序不希望看到的 所以加上const的修飾符 以防止參數(shù)的值在函數(shù)中被修改
這里你也許又會有疑問 那為什么不直接傳 T item
這樣在函數(shù)里改變item的值也不會影響實際參數(shù)的值
原因是這樣的
如果用 T item傳值 需要先把實參里的值 拷貝到另一個內(nèi)存單元中
在函數(shù)中操作的實際上是這個新的內(nèi)存單元中的值
所以不會改變原來參數(shù)的值 這就是所謂的值傳遞
在這個過程中多了兩個開銷 一個是時間開銷 就是把原值拷貝到新地址的時間 另一個是空間開銷 就是新申請的一片區(qū)域
所以用 const T& 傳值可以節(jié)省一些時間和空間的開銷~

TA貢獻1898條經(jīng)驗 獲得超8個贊
void fun(const int a);//變量a為常量,不能被改變
const int fun(void);
int a = fun();
//返回值為常量,不能被改變,即a不能被改變
class A
{
...
void SetA(int a) const;
}
//常量函數(shù),成員函數(shù)SetA,不能改變類A中成員變量的值
添加回答
舉報