[英]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
屬性?
您的回答讓我感到非常興奮。
不完全不普遍。
班上可能有mutable
成員。 授予編譯器可以檢查。
const
方法可能會有其他副作用(例如,寫入控制台),這將很難檢測到函數實現是否在其他轉換單元中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.