首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >大型OOP项目中的C++ main()

大型OOP项目中的C++ main()
EN

Stack Overflow用户
提问于 2009-08-01 17:22:28
回答 7查看 4K关注 0票数 15

这可能是一个简短而简单的问题,但我从未找到一个令人满意的答案:

在大型C++项目中,main()函数通常包含哪些代码?认为它通常只是初始化一个(包装)类对象并调用它内部的函数来设置事情,这是不是一个不正确的假设?

为什么main()一开始就不是一个方法呢?它是为了保持与C的向后兼容性吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-08-01 17:34:53

在我的代码中,它基本上是一个构造函数调用,可能是一个方法调用,以及一些异常处理。这是own of my projects的主要部分(省略了标题和注释,并且像往常一样被SO弄乱了格式):

代码语言:javascript
复制
int main( int argc, char * argv[] ) {
    int result = 0;
    try {
        CLIHandler ch( argc, argv );
        result = ch.ExecCommand();
    }
    catch( const Exception & ex ) {
        result = ExceptionHandler::HandleMyError( ex );
    }
    catch( const std::exception & ex ) {
        result = ExceptionHandler::HandleOtherError( ex );
    }
    catch( ... ) {
        result = ExceptionHandler::HandleUnknownError();
    }
    return result;
}
票数 10
EN

Stack Overflow用户

发布于 2009-08-01 17:28:19

简短的答案是:这要视情况而定。它很可能创建一些在程序持续时间内需要的本地对象,配置它们,告诉它们彼此的情况,并在其中一个对象上调用一个长时间运行的方法。

程序需要一个入口点。如果main必须是对象上的方法,它应该是什么类类型?

使用main作为全局入口点,它可以选择要设置的内容。

票数 1
EN

Stack Overflow用户

发布于 2009-08-01 21:44:01

我的main()函数经常构造各种顶级对象,使它们相互引用。这有助于最小化耦合,将不同顶级对象之间的确切关系限制在main中。

通常,这些顶级对象具有不同的生命周期,包括init()、stop()和start()方法。main()函数负责让对象进入所需的运行状态,等待任何指示关闭的时间,然后以受控的方式关闭所有内容。同样,这有助于保持适当的解耦,并将顶级生命周期管理保持在一个易于理解的位置。我在反应式系统中经常看到这种模式,特别是那些有很多线程的系统。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1217056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档