You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

类定义内的成员函数会被定义在哪个对象文件(.obj)中?

问题解答

类内部直接定义的成员函数(比如你代码里CTest的Add和Subtract),C++标准默认会被当作inline(内联)函数处理,它的编译和链接逻辑和普通函数不一样:

  • 只要有.cpp文件包含了这个头文件(不管是main.cpp还是CTest.cpp),编译时都会在对应的.obj文件(main.obj、CTest.obj)中生成该内联函数的副本(如果代码里调用了它,或者需要用到函数地址的话)。
  • 链接阶段,编译器/链接器会自动合并这些重复的副本,不会触发多重定义的链接错误,这就是这种写法能正常运行的原因。

简单说,它不是只存在于某一个.obj文件里,而是每个用到它的.cpp对应的.obj中都会有相关代码,最后链接时会处理好重复的问题。

内容的提问来源于stack exchange,提问作者Chiara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 10:50:46