小编Ker*_*rry的帖子

如果构造函数抛出异常,如何删除对象?

所以我们有一个构造函数可以根据传递给它的参数抛出异常,但是如果发生这种情况我们不知道如何删除对象.代码的重要部分:

try
{
    GameBase *gameptr = GameBase::getGame(argc, argv);
    if (gameptr == 0)
    {
        std::cout << "Correct usage: " << argv[PROGRAM_NAME] << " " << "TicTacToe" << std::endl;
        return NO_GAME;
    }
    else
    {
        gameptr->play();
    }
    delete gameptr;
}
catch (error e)
{
    if (e == INVALID_DIMENSION)
    {
        std::cout << "Win condition is larger than the length of the board." << std::endl;
        return e;
    }
}
catch (...)
{
    std::cout << "An exception was caught (probably bad_alloc from new operator)" << std::endl; …
Run Code Online (Sandbox Code Playgroud)

c++ memory constructor pointers dynamic-memory-allocation

5
推荐指数
2
解决办法
2258
查看次数