我應該回傳 const 物件還是指標?
在「Effective C Item 03」中,建議在可行的情況下使用 const。例如,Bigint 類別可以同時具有可變版本和 const 版本的operator[] 函數來存取其資料。
但是,傳回 const 物件和傳回非 const 物件之間的差異較小對於像 foo() 這樣傳回原始型別的簡單函數來說是清晰的。人們可能會認為它們的行為相同,但這並不完全正確。
頂層 cv 限定符和返回類型
對於原始類型,頂層 -返回類型上的級別 cv 限定符將被忽略。因此,以下函數宣告在功能上是等效的:
<code class="cpp">int foo(); int const foo();</code>
兩個函數都會傳回一個 int,無論傳回型別上的 const 限定詞為何。
類別類型和類型的意義引用
在處理類型或引用時,這種區別變得至關重要。傳回 const T 可防止呼叫者對回傳值呼叫非常量成員函數。考慮以下範例:
<code class="cpp">class Test { public: void f(); void g() const; }; Test ff(); Test const gg(); ff().f(); // legal ff().g(); // legal gg().f(); // illegal gg().g(); // legal</code>
這裡,gg() 傳回一個 const Test 對象,該物件禁止呼叫其非常量成員函數 f()。
以上是我什麼時候應該在 C 中傳回 const 物件或指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!