慎用 const 引用引數型別

2021-04-18 08:37:37 字數 696 閱讀 2909

前兩天寫**時同事碰到乙個c++編譯錯誤,代號為c2664,內容為 不能將const object * __w64 to object*, 但明明取的就是一般的object*,怎麼會說我們給的引數型別是const object* __w64,很奇怪。

經過細心檢查,原來是函式引數的問題,用的const object& 型別,雖然大家一般都用const 加 &來建立引數,這樣效率會高,也可防止修改物件。但在實際的應用中,這樣使用也會有一些問題。

class object;

char * getmember;

private:

//member viarible; 

char * p;

void test(const object & parm)

在test函式中有個const & 引數,是乙個常物件,而常物件只能只能訪問它自己的const 成員函式,所以這對我們使用object的成員函式造成一些限制。如果不慎使用了非const成員函式,會造成編譯錯誤。

void test(const object & parm)

char* temp = parm.getmember();

// 編譯錯誤,error c2662: 'object::getmember' : cannot convert 'this' pointer from 'const object' to 'object &'

後續:

臨時變數 引用引數和const

好久沒更了,紀念我的日語n5上冊書學成,更一篇博文。甚是開心!在現代c 中,僅當引數為const引用時,如果實參與引用引數不匹配,c 將生成臨時變數。詳細說來生成臨時變數有兩種情況 實參的型別正確,但不是左值實參的型別不正確,但可以轉換為正確的型別 ps1.左值引數是可被引用的資料物件,例如變數 陣...

慎用 Oracle Float 型別

遇到個非常奇怪的問題 兩個中間表表a和表b,用不同的結構對幾個原始表中的收入等資料進行了彙總 按理說,倆表按同樣的某個col做分組後查詢出的收入income應該是相同的!可是對錶a和表b中資料做按某列col的分組後,得出的收入值income差5塊錢 分別對倆表執行sql的結果是倆表按col分組的in...

引用 const引用和非const引用

引用構造了物件的乙個同義詞,是c 物件的另乙個名字。在實際程式中,引用的主要作用是作函式的形參。引用是一種復合型別1,它通過在變數名前新增 來定義。在使用引用的情況下,每一種引用型別都關聯到某一其他型別。c 不能定義引用型別的引用,但是可以定義任何其他型別的引用。int a 100 int refa...