从本地类的c ++æžæž„函数访问返回ç 

时间:2015-02-18 23:38:30

标签: c++ return-value destructor

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;从功能的主体。

5 个答案:

答案 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之åŽä»ç„¶åœ¨èŒƒå›´å†…。回想一下构造函数(和æžæž„函数)åªæ˜¯ä¸€ä¸ªä»€ä¹ˆéƒ½ä¸è¿”回的函数。