簡體   English   中英

G ++為什么不警告const成員未使用的結果?

[英]Why Doesn't G++ Warn About Unused Result of Const Member?

我對自己犯的一個愚蠢的錯誤感到非常惱火。 但是我什至對沒有警告我的編譯器(g ++ 8.1)更加惱火。 ;-)

請考慮以下代碼:

class Test
{
public:

    int getNumber() const
    {
        return 3;
    }
};

int main(void)
{
    Test test;
    test.getNumber();

    return 0;
}

我認為這條線

test.getNumber();

肯定是錯的。 將調用Test的const成員,但不使用返回值。 即使我一直在使用-Wall -Wextra進行編譯-Wall -Wextra g ++也拒絕發出警告。 我已經檢查了-Wunused-result的文檔。 如果我將屬性__attribute__ ((warn_unused_result))到成員,則編譯器確實會警告我。

但是為什么這是必要的? 忽略const方法的返回值是否總是錯誤? 而且我是否不應該為所有const成員自動設置warn_unused_result屬性?

您的回答讓我感到非常興奮。

不完全不普遍。

  1. 班上可能有mutable成員。 授予編譯器可以檢查。

  2. const方法可能會有其他副作用(例如,寫入控制台),這將很難檢測到函數實現是否在其他轉換單元中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM