当前位置:  开发笔记 > 编程语言 > 正文

为什么有时在类中定义C++方法?

如何解决《为什么有时在类中定义C++方法?》经验,为你挑选了2个好方法。

我经常在C++中遇到大型的非模板类,其中简单的方法直接在头文件的类体中定义,而不是在实现文件中单独定义.例如:

class Foo {
  int getBar() const { return bar; }
  ...
};

为什么这样?好像有缺点.实现不是应该隐藏的,代码不太可读,如果类的头文件包含在许多不同的地方,编译器的负担也会增加.

我的猜测是人们打算在其他模块中内联这些功能,这可以显着提高性能.但是,我听说较新的编译器可以跨模块在链接时进行内联(和其他过程间优化).对这种链接时优化的支持有多广泛,它是否真的不需要这些定义?这些定义还有其他充分的理由吗?



1> Adam Rosenfi..:

C++标准表示inline默认情况下在类定义中定义的方法.这为简单的函数(如getter和setter)带来了明显的性能提升.链接时跨模块优化更难,尽管一些编译器可以做到这一点.



2> Gerald..:

除了它之外没有任何理由可以更容易并节省时间.它还在实现文件中节省了一点点混乱,同时在头文件中占用相同数量的行.如果它仅限于吸气剂和制定者这样的东西,那么可读性较差是相当大的.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有