4 回答

TA貢獻1805條經驗 獲得超10個贊
分組。
作為一個特定的示例,請考慮您可以聲明一個函數類型的變量,例如
int f(int);
現在,您將如何聲明一個指向此類事件的指針?
int *f(int);
不,不行!這被解釋為函數returning int*
。您需要添加括號以使其以正確的方式進行解析:
int (*f)(int);
同樣處理數組:
int *x[5]; // array of five int*int (*x)[5]; // pointer to array of five int

TA貢獻1818條經驗 獲得超8個贊
通常允許在此類聲明中使用括號,因為從語法的角度來看,聲明總是像這樣:
<front type> <specification>;
例如,在以下聲明中:
int* p[2];
“ front type”是int
(不是int*
),“ specification”是* p[2]
。
規則是,您可以根據需要在“規格”部分中使用任意數量的括號,因為有時不可避免地要消除歧義。例如:
int* p[2]; // array of 2 pointers to int; same as int (*p[2]);int (*p)[2]; // pointer to an array of 2 ints
指向數組的指針很少見,但是與指向函數的指針相同:
int (*func(int)); // declares a function returning int*int (*func)(int); // declares a pointer to function returning int
這是您問題的直接答案。如果您的問題是關于的聲明C(y)
,則:
在整個表達式中
(C(y))
加上括號- 您將得到想要的該語句除了創建一個臨時對象外什么都不做,在該指令結束后,該對象將不再存在(我希望這是您要執行的操作)。

TA貢獻2041條經驗 獲得超4個贊
正如我提到的,起初它是在析構函數中執行某些操作,我猜這是相當標準的事情,因為您有一些用于設置某些參數然后在析構函數中完成所有工作的“鏈接”功能。不過,感謝您提供另一種解決方法,我想寫作{}
畢竟是最有效的一種方法。

TA貢獻1860條經驗 獲得超8個贊
盡量避免自己編寫語法,并使用標準中提供的語法。<front-type> <specification>
是誤導和錯誤的。語法是<declaration-specifier> <declarator>
- 4 回答
- 0 關注
- 918 瀏覽
添加回答
舉報