Re: [問題] C++ 不能像 Java 一樣,完全避掉 pointe …
看板C_and_CPP (C/C++)作者renderer (rendering)時間19年前 (2005/11/25 20:51)推噓2(2推 0噓 0→)留言2則, 2人參與討論串1/2 (看更多)
※ 引述《eliang ()》之銘言:
: 我自己在寫程式的時候, 對於 reference 和 pointer 的選擇方式是:
: 「盡量使用 reference, 不能用 reference 時才用 pointer」
: 可是這樣會造成整體不一致, 因為有地方用 reference, 有地方用 pointer,
: 寫程式時常常會搞不清楚當初宣告的型別是什麼, 而要回頭去查前面的程式碼,
: 想學 Java 完全都使用 reference 也不行, 因為以下用法都不合法:
: int& a[10]; // 10 個 int 的 reference, 可以分別參考 10 個 int
: vector<int&> b; // 元素為 int& 的動態陣列
: 結論是:
: reference 和 pointer 混用 -> 一致性差, 造成寫程式不方便
: 完全使用 reference -> 行不通
: 那麼是不是乾脆一律用 pointer 還比較好?
: 請問大家是怎麼選擇的?
我個人習慣:「output parameters 用 pointer,input parameters 用 reference」
如:
class Matrix
{
public:
static void Add(Matrix* out, const Matrix& a, const Matrix& b)
{
// out = a + b;
}
};
Matrix a,b,c;
Matrix::Add(&c, a, b);
其意在於:「把 pointer 傳給 Function,有付予 Function 寫值權利的意含,而
非 pointer 的傳入,僅代表資料的傳入。」
這是我個人的習慣,可以某一程度地增加程式的可讀性。
另外 association 的 relationship 我也用 pointer,理由是 association 使用
reference 會造成語意不佳。當然,這也是個人習慣。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.221.77
※ 編輯: renderer 來自: 61.228.221.77 (11/25 21:06)
推
11/25 21:48, , 1F
11/25 21:48, 1F
推
11/28 23:19, , 2F
11/28 23:19, 2F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章