1樓:匿名使用者
有區別。
首先要知道函式名後面加const只能用於成員函式。
int const func(); //合法,相當於const int func();
int func2() const; //非法,對函式的const限定詞只能用於成員函式
在成員函式中,const加在函式名前和後也是有區別的。
例如:class a ;
int const a::func()
int a::func() const
上面的**是合法的,其中a::func成員函式是一個過載成員函式,兩個函式都返回int型別資料(注意:對於c/c++,返回型別或引數型別中,const int和int被認為是一種型別。
但是const int *和int *不是一種型別),這兩個過載函式正是基於函式名後的const來過載的。
int const func();表示該成員函式的隱藏this指標引數是a * const型別的;而int func() const;表示該過載成員函式的隱藏this指標引數是a const * const型別的.
a * const型別和a const * const型別是不同型別,因此可以過載。
由此可見const放在函式名後和名前是不同的
2樓:匿名使用者
const int *a; 指向的變數不可修改 指標可修改
int *consta; 指向的變數值可變 指標不可改變
看const在*的 左面還是右面
請問c++中const加在型別名前和變數名前的區別??????
3樓:匿名使用者
const是用來宣告一個bai常量的
du,當你不想讓一個zhi值被改變時就用daoconst,const int max && int const max 是沒有區別的內,都可以。
不涉容及到指標const很好理解。
涉及到指標的情況:
int b=100;
const int * a=&b [1];
如果const位於星號的左側,則const就是用來修飾指標所指向的變數,即指標指向為常量;如果const位於星號的右側,const就是修飾指標本身,即指標本身是常量。因此,[1]和[2]的情況相同,都是指標所指向的內容為常量(const放在變數宣告符的位置無關),這種情況下不允許對內容進行更改操作,如不能*a = 3 ;[3]為指標本身是常量,而指標所指向的內容不是常量,這種情況下不能對指標本身進行更改操作,如a++是錯誤的;[4]為指標本身和指向的內容均為常量。
在c中建構函式名和類名相同那怎麼判斷new例項化
樓主說的方式有點問題 new 一個物件的時候,就是通過呼叫構造方法來實現的。不能說呼叫的是類還是構造方法。建構函式可以通過引數的數量 資料型別,可以進行過載。 建構函式一定要跟類名相同,不然會報錯,你用new的時候,就是使用建構函式。 很奇怪你為什麼會有這樣的問題,例項化必然使用new這樣的語法,編...
c中指向函式的指標初始化和使用,請教C 中函式型指標和指標型函式的用法和區別,謝謝
牽著你的手 c 指向函式的指標定義方式為 返回型別 指標名 函式引數列表 例如 void p int 是指向一個返回值為void 引數為int型別的函式。而若想定義一個指向類成員函式的函式指標該怎麼定義呢?對成員函式指標的使用。1 非靜態成員函式 定義方式 返回型別 類名 指標名 函式引數列表 例如...
c 中兩個函式函式名相同,引數型別和引數個數也相同,但是函式型別不同,那它們是過載函式嗎
函式過載只看引數個數和型別 所以如果只是返回值相同的函式就不是過載函式了 莊政警 這樣不是過載。函式過載要求函式的引數個數不同或者引數型別不同。因為呼叫函式的時候無法確認函式的返回型別,所以僅返回型別不同的函式都可以匹配,這樣就造成二義性,所以僅僅是返回型別不同是不能過載的,比如有int f int...