1樓:
1全部別人問起,不能簡單說const表示常數,這樣會讓別人覺得很外行。或許可以說是隻讀,其實也不完全正確。務必要弄清楚一下幾個定義的含義:
const int a; //a是一個常整型數
int const a; //a是一個整型常數
const int *a; //a是一個指向常整型數的指標,從這裡可以看出整型數不可以修改,但指標可以。
int * const a; //a是一個指向整型數的常指標,整型數可以修改,指標不能修改。
int const * a const; //a是一個指向常整型數的常指標。
如果能正確回答這些問題,那麼他就給我留下了一個好印象。順帶提一句,也許你可能會問,即使不用關鍵字 const,也還是能很容易寫出功能正確的程式,那麼我為什麼還要如此看重關鍵字const呢?我也如下的幾下理由:
1). 關鍵字const的作用是為給讀你**的人傳達非常有用的資訊,實際上,宣告一個引數為常量是為了告訴了使用者這個引數的應用目的。如果你曾花很多時間清理其它人留下的垃圾,你就會很快學會感謝這點多餘的資訊。
(當然,懂得用const的程式設計師很少會留下的垃圾讓別人來清理的。)
2). 通過給優化器一些附加的資訊,使用關鍵字const也許能產生更緊湊的**。
3). 合理地使用關鍵字const可以使編譯器很自然地保護那些不希望被改變的引數,防止其被無意的**修改。簡而言之,這樣可以減少bug的出現。
2樓:匿名使用者
一樓的有點答非所問,我來跟你簡單的說說吧,const修飾符能修飾類的成員函式而不能修飾普通的自定義函式,類的成員函式加上了const修飾符後它用兩個作用,1:在該函式內不允許對類的私有資料成員進行修改,2:當宣告瞭一個const的該類物件時,該物件只能呼叫該類的const成員函式而不能呼叫非const成員函式.
如果宣告一個非const的該類物件,該物件既可以呼叫const成員函式也可以呼叫非const成員函式.
3樓:匿名使用者
樓上不知道**複製來一堆牛頭不是很對馬嘴的答案。。。。。。
const宣告函式就是表明這個函式不會對類的成員變數進行修改,所以如果有常引用或者常指標指向這個類的物件,就可以呼叫const 宣告的函式,沒有const的不能被呼叫。
理解到這裡一般就夠了,如果你還想知道更多,去搜搜mutable關鍵字在c++中的作用。
4樓:匿名使用者
2l的回答基本正確,但不到位。
因為回答過這個問題,就不復制貼上了,較詳細的說明和舉例如下:
幾個要點:
1.const修飾的函式只能是非靜態成員函式。
2.語義:const修飾的函式具有常量語義。const成員函式不能修改物件的成員(特別地,要注意delete不算這裡的「修改」),除非這個成員的定義中被mutable修飾。
3.const修飾的物件以及const指標或引用指向的物件都無法呼叫非const修飾的成員函式。
// xrhigh 回答中的「私有資料成員」的「私有」是多餘的。不要把訪問許可權控制摻和到這個問題中來。
====
[原創回答團]
為什麼類裡要有const函式,const函式在類裡有什麼作用?
5樓:匿名使用者
有兩種const函式,宣告如下:
1、const t func();
2、t func() const;
第一種表示返回的是const的型別,也即返回的值不能作為左值,樓主懂的。
第二種表示該成員函式不能修改其成員變數的值,即該函式不能改變任何該類的非靜態成員的值。
6樓:匿名使用者
const是一個c語言的關鍵字,它限定一個變數不允許被改變,產生靜態作用。使用const在一定程度上可以提高程式的安全性和可靠性。另外,在**別
人**的時候,清晰理解const所起的作用,對理解對方的程式也有一些幫助。另外const在其他程式語言中也有出現,如c++、php5、
c#.net、hc08 c。
主要作用
(1)可以定義const常量,具有不可變性。
例如:const int max=100; max++會產生錯誤;
(2)便於進行型別檢查,使編譯器對處理內容有更多瞭解,消除了一些隱患。
例如: void f(const int i) 編譯器就會知道i是一個常量,不允許修改;
(3)可以避免意義模糊的數字出現,同樣可以很方便地進行引數的調整和修改。 同巨集定義一樣,可以做到不變則已,一變都變!
如(1)中,如果想修改max的內容,只需要:const int max=you want;即可!
(4)可以保護被修飾的東西,防止意外的修改,增強程式的健壯性。 還是上面的例子,如果在函式體內修改了i,編譯器就會報錯;
例如: void f(const int i)
(5) 可以節省空間,避免不必要的記憶體分配。 例如:
#define pi 3.14159 //常量巨集
const double pi=3.14159; //此時並未將pi放入ram中 ......
double i=pi; //此時為pi分配記憶體,以後不再分配!
double i=pi; //編譯期間進行巨集替換,分配記憶體
double j=pi; //沒有記憶體分配
double j=pi; //再進行巨集替換,又一次分配記憶體!
const定義常量從彙編的角度來看,只是給出了對應的記憶體地址,而不是像#define一樣給出的是立即數,所以,const定義的常量在程式執行過程中只有一份拷貝,而#define定義的常量在記憶體中有若干份拷貝。
(6) 提高了效率。
編譯器通常不為普通const常量分配儲存空間,而是將它們儲存在符號表中,這使得它成為一個編譯期間的常量,沒有了儲存與讀記憶體的操作,使得它的效率也很高。
7樓:匿名使用者
const 對於類的封裝是很有好處的,要知道用const定義後,其值是不能隨便改變的,相當於一個常量。如果類中的成員能隨便改變其屬性,類就會很混亂,**的重複利用就很差,不利於程式設計。
c++在函式宣告時,後面跟個const是什麼意思?
8樓:幻翼高達
c++在函式宣告時,後面跟個const是限定函式型別為常成員函式, 常成員函式是指不能改變成員變數值的函式。
例如「double d() const;」,其中的其中的「const」限定了d()函式中不能有任何改變其所屬物件成員變數值的功能,如果有則會在編譯階段就報錯。
它的主要作用就是能使成員函式的意義更加清楚,我們可在不改變物件的成員函式的函式原型中加上const說明。在需要增加可讀性和減少邏輯出錯的情況下,就可以用這種形式。
我們定義的類的成員函式中,常常有一些成員函式不改變類的資料成員,也就是說,這些函式是"只讀"函式,而有一些函式要修改類資料成員的值。如果把不改變資料成員的函式都加上const關鍵字進行標識,顯然,可提高程式的可讀性。
另外,它還能提高程式的可靠性,已定義成const的成員函式,一旦企圖修改資料成員的值,則編譯器按錯誤處理。
9樓:釗鉼
const是一個c語言(ansi c)的關鍵字,具有著舉足輕重的地位。它限定一個變數不允許被改變,產生靜態作用。
使用const在一定程度上可以提高程式的安全性和可靠性。另外,在**別人**的時候,清晰理解const所起的作用,對理解對方的程式也有一定幫助。另外const在其它程式語言中也有出現,例如pascal、c++、php5、b#.
net、hc08 c、c#等。
const的作用:
1、可以定義const常量,具有不可變性。
2、便於進行型別檢查,使編譯器對處理內容有更多瞭解,消除了一些隱患。
3、可以避免意義模糊的數字出現,同樣可以很方便地進行引數的調整和修改。 同巨集定義一樣,可以做到不變則已,一變都變!
c++是c語言的繼承,它既可以進行c語言的過程化程式設計,又可以進行以抽象資料型別為特點的基於物件的程式設計,還可以進行以繼承和多型為特點的物件導向的程式設計。c++擅長物件導向程式設計的同時,還可以進行基於過程的程式設計,因而c++就適應的問題規模而論,大小由之。
c++不僅擁有計算機高效執行的實用性特徵,同時還致力於提高大規模程式的程式設計質量與程式設計語言的問題描述能力。
10樓:匿名使用者
這兒的const就是說這個函式操作不會對變數或是物件之類的值有影響 比如你有一個human類 你現在要得到某個human類物件a的age 那麼肯定是不會因為你想得到這個值而改變了age的大小 對吧 那麼你就可以寫一個函式int getage()const這樣就好 這麼做是為了防止你在函式中對不應該在這裡改變的量不小心進行了改變
11樓:韌勁
非靜態成員
函式後面加const(加到非成員函式或靜態成員後面會產生編譯錯誤),表示成員函式隱含傳入的this指標為 const指標,決定了在該成員函式中,任意修改它所在的類的成員的操作都是不允許的(因為隱含了對this指標的const引用);唯一的例外是對於 mutable修飾的成員。加了const的成員函式可以被非const物件和const物件呼叫,但不加const的成員函式只能被非const物件調 用。例如:
class a
int geta() const
int geta()
int seta(int a) constint seta(int a)
};a a1;
const a a2;
int t;
t = a1.geta();
t = a1.geta();
t = a2.geta();
t = a2.geta(); //a2是const物件,呼叫非const成員函式產生編譯錯誤。
12樓:淼淼
const修飾說明它是一個常量,它的值是不能被修改的。沒有什麼地方是必須要用的,你只要覺得這個數字你不會改變就可以用。一般在函式傳遞引數中用的比較多,你可以看看c語言的庫函式引數中很多都是用const修飾的。
比如字串拷貝的宣告函式char *strcpy(char *dest,const char *src); 後邊的形參用了const修飾,在函式定義中src的值就不能被改變,dest的值就可以被改變,也是一種提示的作用說明字串是從src拷貝到dest中
C中return函式具體有什麼用
就是在程式裡,你編寫了一個函式 當你呼叫完這個函式,函式需要返回一個值 專函式中最後一行,就是return 起到返回屬值的作用簡單點的意思就是,用函式做運算,運算完,函式將結果返回,return就是返回結果用的 舉例 int max int i,int j void main 求大數 比如你用個函式...
python這類裡函式有什麼用,python這類裡第一個函式有什麼用?
物件呼叫方法bai時,實際上du是通過類呼叫的 zhi a muffedcalculator a.calc expr 實際上是這樣調dao用的 muffledcalculator.calc a,expr 這樣self 就是版 a,python隱含地把a 傳進權方法 替代了self,就成了繫結的方法,...
Python的內建函式有什麼,分別有什麼用處
python 內建函式比較多。我發個列表給你 網頁連結 請問下,python中的工廠函式和內建函式,他們兩個到底有什麼區別和聯絡啊?定義不同啊。內建函式應該是不需要import就可以使用的函式。工廠不是個函式,是個類。工廠類這要從 設計模式 說起,工廠模式。但是用起來,至少在python中,工廠模式...