跟const相關的函式過載

2021-07-02 12:43:16 字數 456 閱讀 9180

class p

;

這些竟然都算是過載,我也是醉了!

一般情況下,無const修飾的宣告,函式呼叫時,必須有變數名,不能使用字面值, 且型別必須是宣告型別,不會進行型別轉換,否則出錯。

//對於宣告為  int increase(int &val)

int a=1;

int b=2;

double c=3;

const int d=4;

increase(a);//ok

increase(a+b);//error

increase(c);//error

increase(3);//error

increase(d);//error

而有const宣告的,即會型別轉換,又可以使用字面值,有無const修飾的變數都可以

const 和 非const函式過載

在下面的 中a1呼叫const版本,a2呼叫非const版本。const a a1 a a2 a1.x a2.x 後面加const表示在該函式中不能對類的資料成員進行改變,比如 class a 這可以 int x const 當然有特殊情況,就是用mutable關鍵字修飾過的成員變數可以在宣告為co...

函式過載之const

我們知道,如果函式名相同,在相同的作用域內,其引數型別 引數個數,引數順序不同等能構成函式過載。有趣的是如果同時在類中,對於函式名相同的const函式和非const函式能夠構成過載,同時它們被呼叫的時機為 如果定義的物件是常物件,則呼叫的是const成員函式,如果定義的物件是非常物件,則呼叫過載的非...

const 成員函式過載

先看一段引用 1 許多人漠視一件事實 兩個成員函式如果只是常量性 constess 不同,可以被過載 ok,下面為了解釋,定義一下下面這個類 class cstring const char operator size t i const 注意這個const 常量,屬於函式簽名,因此導致過載 然後有...