當函數將非const參數作爲參數時,它可能會創建難以讀取的代碼,因爲在調用站點上,哪些輸入可能會更改並不明顯。這導致一些代碼約定來執行的指針來代替,例如使用boost :: ref來指示編碼約定中的意圖
void func(int input, int* output);
int input = 1, output = 0;
func(input, &output);
代替
void func(int input, int& output);
int input = 1, output = 0;
func(input, output);
就個人而言,我不喜歡用,因爲需要檢查空指針。這導致我懷疑的boost :: REF(或std ::裁判對C++ 11)可用於信號意向,具體如下:
void func(int input, int& output);
int input = 1, output = 0;
func(input, boost::ref(output));
這將被用來作爲一個公司編碼約定。 我的問題是,有沒有任何理由爲什麼這不是一個好主意?
我真的不想避免非const引用,因爲您需要查看函數的聲明,以確保您正確調用它(正確的參數數,正確的類型)。我沒有看看你的想法是一個壞主意的任何原因,但我認爲從長遠來看,這不會給你帶來太多的收益。 – bstamour