[英]Difference between (void)obj and void(obj)
根據http://en.cppreference.com/w/cpp/language/explicit_cast,C風格的演員和功能演員是等效的。 但是,請參閱以下示例:
#include <array>
int main() {
std::array<int, 3> arr{};
(void)arr;
//void(arr);
}
雖然(void)arr編譯,但void(arr)卻沒有。 我錯過了什么?
如果沒有涉及的歧義(例如,具有相同名稱的其他函數,宏...), 則以下代碼聲明並定義兩個int
變量
int a = 22;
int (b) = 33;
因此, 您正在嘗試創建一個void變量類型(具有現有名稱) 。
那是錯的,因為:
您正在嘗試將現有名稱用於同一范圍內的另一個變量
雖然void(arr)
通常與(void)arr
相同,但在此上下文中它是一個定義,並且您嘗試創建一個名為arr
的變量,該變量類型為void
,這是不允許的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.