int foo() {
Magic magic;
if (something) return 1;
if (something_else) return 2;
return 0;
}
让我们说我有一个如上所述的功能;
magic
æžæž„函数是å¦å¯ä»¥å¼•ç”¨è¯¥å‡½æ•°å³å°†è¿”回的值?
class Magic {
~Magic() {
int return_code = <magic spell>;
std::cout << "the method returns" << return_code;
}
};
- 编辑 -
例如,golangå·²ç»å‘½å了一个返回å˜é‡ï¼Œæ‚¨å¯ä»¥ä»Žå»¶è¿Ÿè¯å¥ä¸è®¿é—®å’Œ/或修改它们 - 在它们被返回åŽï¼ƒ34;从功能的主体。
ç”案 0 :(得分:1)
我ä¸ç¡®å®šæˆ‘是å¦æ˜Žç™½äº†ï¼Œä½†ä¹Ÿè®¸è¿™ä¼šå¯¹ä½ 有帮助......
#include <iostream>
class Magic {
const int& _retVal;
public:
Magic(const int& retVal) : _retVal(retVal) {}
~Magic() {
std::cout << "foo() returns " << _retVal << std::endl;
}
};
int foo() {
int fooRetVal=0;
Magic magic(fooRetVal);
if(true) fooRetVal=1;
else fooRetVal=-1;
return fooRetVal;
}
ç”案 1 :(得分:0)
æˆ‘å¾ˆç¡®å®šä½ æ— æ³•è®©æžæž„函数返回值。æžæž„函数ä¸ä¼šè¿™æ ·åš;ï¼‰ä¹Ÿæ— æ³•è®¾ç½®æžæž„函数的返回类型。 在您的示例ä¸ï¼Œæžæž„函数将在返回0åŽè°ƒç”¨;é‚£æ—¶ä½ æ ¹æœ¬å¾—ä¸åˆ°ä»»ä½•ä¸œè¥¿ã€‚ 您å¯ä»¥è®¾ç½®æžæž„函数æ¥é€šè¿‡å˜å‚¨åœ¨Magicç±»ä¸çš„指针æ¥ä¿®æ”¹æ•°æ®ã€‚
ç”案 2 :(得分:0)
没有。
æžæž„函数ä¸èƒ½è¿”回值,也ä¸èƒ½æŠ›å‡ºå¼‚常。
ç”案 3 :(得分:0)
我明白了。在这ç§æƒ…况下,您å¯ä»¥æ–¹ä¾¿åœ°æ‰¾åˆ°å¦ä¸€ä¸ªä¸éœ€è¦ä½¿ç”¨æžæž„函数的优雅解决方案。æžæž„函数应该释放内å˜å¹¶æ¸…ç†å†…å®¹ã€‚ä½ èƒ½åšä»€ä¹ˆï¼ˆå¦‚æžœä½ çœŸçš„åšæŒçš„è¯ï¼‰æ˜¯åœ¨è°ƒç”¨return 0之å‰ä»Žå †ä¸åˆ 除对象......
ç”案 4 :(得分:0)
是;上é¢çš„代ç åªæ˜¯åœ¨æžæž„函数ä¸æ‰§è¡Œcout
è¯å¥ï¼Œå³å¦ä¸€ä¸ªå‡½æ•°ã€‚ä½ å¿…é¡»åœ¨returnè¯å¥ä¹‹å‰è°ƒç”¨æžæž„å‡½æ•°ï¼Œå› ä¸ºæž„é€ å‡½æ•°åœ¨return 0
之åŽä»ç„¶åœ¨èŒƒå›´å†…ã€‚å›žæƒ³ä¸€ä¸‹æž„é€ å‡½æ•°ï¼ˆå’Œæžæž„函数)åªæ˜¯ä¸€ä¸ªä»€ä¹ˆéƒ½ä¸è¿”回的函数。