首頁  >  文章  >  後端開發  >  我什麼時候應該在 C 中傳回 const 物件或指標?

我什麼時候應該在 C 中傳回 const 物件或指標?

Patricia Arquette
Patricia Arquette原創
2024-10-29 05:46:311086瀏覽

When Should I Return const Objects or Pointers in C  ?

我應該回傳 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn