第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

以下代碼內(nèi)容求助,具體是關(guān)于const,麻煩知道的幫忙看一下~

以下代碼內(nèi)容求助,具體是關(guān)于const,麻煩知道的幫忙看一下~

冉冉說 2021-11-25 21:15:55
template <class T>class Node{private:Node<T> *next; //指向后繼結(jié)點(diǎn)的指針public:T data; //數(shù)據(jù)域Node (const T& item, Node<T>* ptrnext = NULL); // 構(gòu)造函數(shù)void InsertAfter(Node<T> *p); // 在本結(jié)點(diǎn)之后插入一個(gè)同類結(jié)點(diǎn)p Node<T> *DeleteAfter(void); // 刪除本結(jié)點(diǎn)的后繼結(jié)點(diǎn),并返回其地址Node<T> *NextNode(void) const; // 獲取后繼結(jié)點(diǎn)的地址};我只知道只有常成員函數(shù)才有資格操作常量或常對(duì)象,但是上述代碼中沒有定義常量啊,那Node<T> *NextNode(void) const;中為什么定義成const呢??還有Node (const T& item, Node<T>* ptrnext = NULL);中為什么要加上一個(gè)const呢???請(qǐng)高手指點(diǎn)迷津!!!!!!!
查看完整描述

2 回答

?
慕雪6442864

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í)間和空間的開銷~

查看完整回答
反對(duì) 回復(fù) 2021-11-29
?
汪汪一只貓

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中成員變量的值



查看完整回答
反對(duì) 回復(fù) 2021-11-29
  • 2 回答
  • 0 關(guān)注
  • 355 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)