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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求解C/C++ 關(guān)鍵字const的定義?

求解C/C++ 關(guān)鍵字const的定義?

C++ C
Cats萌萌 2021-11-24 15:11:56
(4)對于類的成員函數(shù),若指定其為const 類型,則表明其是一個常函數(shù),不能修改類的成員變量;(5)對于類的成員函數(shù),有時候必須指定其返回值為const 類型,以使得其返回值不為“左值”這兩句話什么意思。
查看完整描述

2 回答

?
MM們

TA貢獻(xiàn)1886條經(jīng)驗 獲得超2個贊

舉一個例子,可能你會跟明白些。
No.(4)
class A
{
public:
A(int n=0):data(n){}
void SetData( int n )
{
data = n;
}

int GetData() const // const成員函數(shù)
{
// 在const成員函數(shù)里面【只能取用】成員變量,而【不能修改】該類里面任何的成員變量
// 比如,如下代碼會編譯出錯,
//data = 1; // error C2166: l-value specifies const object
cout << data; // 取用是沒有問題的。
return data;
}
private:
int data;
};
所以,對于一個成員函數(shù),其函數(shù)體內(nèi)的代碼如果只是成員變量,而不會修改任何成員變量,就應(yīng)該給這個函數(shù)加上const,來表達(dá)你的這個意圖。防止以后維護人員不小心在這個函數(shù)里修改了變量,編譯的時候馬上就會知道了。
通常gettor函數(shù)就應(yīng)該設(shè)置成const成員函數(shù)。如上的代碼所示。

還有,附加說明一下:通過一個const對象(object)調(diào)用其成員函數(shù),那只能調(diào)

用const成員函數(shù)。如果聲明了一個上面那個類A的const對象,如下:
const A aObj(10); // aObj是一個常量對象
cout << aObj.GetData(); // ok
//aObj.SetData( 11 ); // error,因為SetData不是const成員函數(shù)
然而,對于非const對象,卻沒有這個限制。非const對象依然可以調(diào)用const成員函數(shù)的。

NO.(5)
struct MyData
{
int a;
int b;
int c;
// ...
};

class MyClass
{
public:
void SetInitData()
{
m_Data.a = 1;
m_Data.b = 1;
m_Data.c = 1;
}

const MyData& GeteMyData() const // 這里面有2個const:)。后面的那個
// const的意思,上面說的那個。
{
return m_Data;
}
private:
MyData m_Data;
};

如下使用:
MyClass myObj;
myObj.SetInitData();
//MyData& myData = myObj.GeteMyData(); 這行代碼會編譯不通過的喲
// 給返回類型的數(shù)據(jù)加上const的引用的意思是,只給你拿去read,但是不允

許你write。
const MyData& myData = myObj.GeteMyData();
//myData.a = 2; // error.嘗試修改,會編譯不通過。
所以第五點的核心意思就是返回一個常量引用,作為只讀數(shù)據(jù)使用。
注:一般情況下,對于這一條,都會指定const T&(注:引用)。



查看完整回答
反對 回復(fù) 2021-11-29
?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗 獲得超4個贊

一些情況下類中的成員變量需要賦值后不變,所以會定義為常成員變量,如const a;將類的成員函數(shù)指定為const 類型如void show() const;于是在函數(shù)中,我們可以放心地使用常成員變量和常成員函數(shù),因為在編譯的時候編譯器就會自動檢查這個函數(shù)是否有違規(guī)改變常變量的值,違規(guī)則不會通過編譯。它的作用是對于常變量而言的。
返回值為const的函數(shù)例如const int test();會返回一個const int 型的返回值,如重載運算符“=”,const T &operator=(T &t),T d=(a=b+c);d的值也等于b+c,不會等于a的原值。

查看完整回答
反對 回復(fù) 2021-11-29
  • 2 回答
  • 0 關(guān)注
  • 324 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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