回答
是的,你可以從一個void函數返回。
有趣的是,你還可以從一個void函數返回void。例如:
void foo()
{
return void();
}
正如預期的那樣,這是相同的平紋return;
。它可能看起來深奧,但原因是模板的一致性:
template<class T>
T default_value()
{
return T();
}
這裏,default_value
返回類型T的缺省構造的對象,因爲返回void
的能力,它的工作原理,即使T
= void
。
如果在返回指令中,你調用一個返回void的函數,它是一樣的嗎?例如返回f(); f的原型是void f(); – Goaler444 2016-09-16 14:17:08
哦,等等,所以這個構造函數有void(void)簽名?所以'return void(void())'也是有效的。代碼混淆比賽任何人? – 2016-12-06 13:17:25
當然可以。你只是不應該返回一個實際的價值。
是的,您可以使用該代碼從函數返回。 (我有非常詳細的在這裏做堆棧溢出不能說我的答案是太短)
不,只有15個字符。相信我,我跑進去* *所有的時間... – 2010-02-12 01:44:11
IIRC你曾經是能夠用空格填充它:-) – xyz 2010-02-12 01:48:52
可以使用橢圓墊了幾個字符,'(15)'給你甚至更清楚地表明你只是爲了填充而做的。 – 2010-02-12 01:50:58
你不應該有回報有,程序會自動返回到以前的功能,進入調試模式並逐步完成,您可以自己查看。 另一方面,我認爲沒有回報會傷害程序。
是的,你是對的。雖然不知道這裏引用的一些代碼是指什麼,但它可能是明確的。儘管剛好在右大括號之前的返回是無關緊要的。 – Casey 2010-02-12 01:45:29
是的,這將從函數返回到先前的遞歸級別。這將是非常基本的解釋,但是當你調用一個函數時,你正在創建一個新的調用堆棧。在遞歸函數中,您只需添加到該調用堆棧。通過從函數返回,無論您是否返回值,您都將堆棧指針移回堆棧上的前一個函數。它有點像一堆盤子。你繼續把盤子放在它上面,但是回來時會移動頂盤。
您也可以使用調試器來驗證這一點。只需在代碼中添加幾個中斷點並逐步完成。你可以驗證它是否有效。
堆棧幀。新的線程獲得新的堆棧,函數調用在給定線程的同一堆棧上獲取新的堆棧幀。只是想澄清那些細節,因爲它可能會混淆新手。 – stu 2016-07-11 21:00:49
簡單的答案是YES! C++將void方法識別爲一個沒有返回的函數。它主要是告訴無論發生任何事,一旦你看到的return;
休息,離開的方法編譯器....
正如其他人所說,是的,你可以。在這個例子中,回報是沒有必要的,並且可以達到目的。我認爲你所指的是一個函數中的早期迴歸。你也可以這樣做,但這是不好的編程習慣,因爲它會導致複雜的控制流(不是單入單出口),還有像break這樣的語句。相反,只需使用if/else()這樣的條件就可以跳過該函數的其餘部分。
- 1. 我可以在void函數中寫入返回NULL語句嗎?
- 2. 返回void函數
- 3. 我們可以在函數返回數據類型爲void的例程中調用函數嗎?
- 4. 函數中可以返回double *嗎?
- 5. 一個constexpr函數可以調用一個返回void的函數嗎?
- 6. 我可以從另一個函數返回返回值嗎?
- 7. 我可以在sed中返回bash函數嗎?
- 8. 我可以返回在函數中創建的緩衝區嗎?
- 9. 我可以在帶返回的函數中使用URLSession嗎?
- 10. 在函數中返回值後,我們可以使用free()嗎?
- 11. 我可以避免在不返回無效的函數中返回值嗎?
- 12. 返回值void *在函數中
- 13. Casting函數返回void
- 14. PostgreSQL函數返回void
- 15. jQuery - show()函數可以返回true嗎?
- 16. VBScript函數可以返回字典嗎?
- 17. main()函數可以返回double嗎?
- 18. JavaScript函數可以自行返回嗎?
- 19. 可以tr1 ::函數swallow返回值嗎?
- 20. STUFF函數可以返回NULL值嗎?
- 21. 在void函數中返回「nothing」是允許的嗎?
- 22. 我可以在非無效返回函數上使用[[noreturn]]嗎?
- 23. 我可以在afterAction中配置yii2函數來返回我的api數據嗎?
- 24. 可以純虛函數有定義還是返回類型「void」?
- 25. AWK咖喱函數 - 函數可以返回一個函數嗎?
- 26. 返回語句中的void函數C
- 27. 返回從一個在C void函數++
- 28. 我應該寫回報;在一個void返回函數?
- 29. 在C++中新返回(void *)嗎?
- 30. 無返回函數的函數評估返回void
你試過編譯過嗎? – 2010-02-12 01:41:20
@Mitch:因爲這是合理的,它只能證明_your_編譯器支持它,而不是它是否實際上是有效的C++。例如。我可以很容易地「證明」void main()是正確的。 – MSalters 2010-02-12 10:40:44