2 回答

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

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
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中成員變量的值
添加回答
舉報(bào)