在C++ void function()中,如果要提前返回的話,只要加上return;
那麼,是否可以return 一個void function呢? 答案是可以的,以下是C++03標準的摘錄
A return statement with an expression of type “cv void” can be used only in functions with a return type of cv void; the expression is evaluated just before the function returns to its caller.
C++03 6.6.3 The return statement
以下的程式碼皆為合法的C++
void g() { } void h() { return g(); // 這等同於 g(); return; } void f() { return void(); }
以上的特性在template中可以如以下應用
class C { }; template T foo(void) { return T(); } void f1() { return foo(); } int f2() { return foo(); }
除了上面template的需要,一般是分開寫 f(); return;
return f(); 的作法可用作在API設計上提醒使用者做完某個function後就要返回,減少呼叫完忘記加return的機會。
但是因為C++回傳有型別的限制,這樣的技巧一般會在像javascript這類的語言中使用。