抛出异常时我可以使用什么样的指针?

时间:2015-04-13 20:14:44

标签: c++ exception

struct except
{
    except( const char * key )
        : m_key( key )
    {
    }

    const char * key() { return m_str; }


private:
    const char * m_str;
};

void throwing_function( const std::string & param )
{
    throw except( param.c_str() );
}

考虑以下代码段:如果从key()块的范围发出,对异常的成员函数catch的调用是否有效?

1 个答案:

答案 0 :(得分:2)

这取决于param是什么引用。如果它是对全局字符串的引用,则位于堆栈之上,然后是catch,或者是动态分配而不是从堆栈展开中销毁,它将起作用,否则该字符串将被破坏时间你catch

所以,如果从那个解释中没有明确说明:不要这样做。