inline成员函数的问题

shandongmn 2013-04-15 12:54:43
1. 对于类里实现的函数,是否都是inline?

比如代码过长,循环次数过多?

2.

类外实现的inline函数,在类里申明的时候,inline是否必须?
...全文
150 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mujiok2003 2013-04-15
  • 打赏
  • 举报
回复
引用 3 楼 shandongmn 的回复:
如果编译器不强制的话,那么就重复链接了。 必然最终链接错误啊。
不会重复定义,请放心使用。
ri_aje 2013-04-15
  • 打赏
  • 举报
回复
成员函数定义在类定义内部的,都默认加了 inline 关键字。 类里只给声明,外部实现定义的时候,必须显示的加 inline 关键字。 inline 只是建议,不是强制,最终是否 inline 由编译器说了算。 现代编译器很先进,你不加 inline,经编译器分析都认为能 inline 也自动 inline 了;你加了 inline,编译器认为不适合 inline 的也不会 inline。因此 inline 有些鸡肋了。 inline 函数即便在不同编译单元有多份定义,标准也要求视同只有一份,不允许链接器对这种情况报错。
shandongmn 2013-04-15
  • 打赏
  • 举报
回复
引用 2 楼 csd1208 的回复:
1. 如果没有声明函数是inline,则不会默认类函数时内联函数 2. 需要关键字inline 其实,内联 对于编译器来说只是一个建议,编译器可以选择忽略这个建议。
1. 不对吧,默认就是内联了 2. 貌似申明的时候可以不需要。
引用 1 楼 mujiok2003 的回复:
隐式内联或显示内联只是告诉编译器尽量内联,不是强制要求
这个比较麻烦,因为内联可以防止重复链接!! 如果编译器不强制的话,那么就重复链接了。 必然最终链接错误啊。
csd1208 2013-04-15
  • 打赏
  • 举报
回复
1. 如果没有声明函数是inline,则不会默认类函数时内联函数 2. 需要关键字inline 其实,内联 对于编译器来说只是一个建议,编译器可以选择忽略这个建议。
mujiok2003 2013-04-15
  • 打赏
  • 举报
回复
隐式内联或显示内联只是告诉编译器尽量内联,不是强制要求

64,661

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧