【发布时间】:2016-06-05 05:48:35
【问题描述】:
在类定义中定义的成员函数是否与在 C++ 中其他地方定义的成员函数不同?例如,考虑以下 foo.h
#pragma once
struct foo {
void bar() {}
void buz();
};
和 foo.cpp
#include "foo.h"
void foo::buz() {};
如果我们查看 foo.o 的符号
$ g++ -c foo.cpp
$ nm -a foo.o
0000000000000000 b .bss
0000000000000000 n .comment
0000000000000000 d .data
0000000000000000 r .eh_frame
0000000000000000 a foo.cpp
0000000000000000 n .note.GNU-stack
0000000000000000 t .text
0000000000000000 T _ZN3foo3buzEv
$ c++filt _ZN3foo3buzEv
foo::buz()
我们看到我们只有foo::buz 的符号。现在,假设我们编译多个包含foo.h 的文件,然后从结果中创建一个库。成员函数bar 和buz 的处理方式是否不同?
【问题讨论】:
-
尝试再次编译相同的东西,但使用内联成员函数。
标签: c++