我有这个小代码:
#include <iostream>
class Test {
private:
int i_;
public:
Test() :
i_() {}
Test(int i) :
i_(i) {}
~Test() {}
void dump() const {
std::cout << "i " << i_ << std::endl;
}
};
int main() {
Test t(3);
Test t1(t);
Test t2(5);
t2 = t;
t.dump();
t1.dump();
t2.dump();
return 0;
}
我知道C ++本身会构造一个复制构造函数和一个做作运算符。这就是为什么我可以编译这段代码,即使使用标志并运行它也没有任何问题。
nm -C <generated file>
我无法看到成员函数-
$> g++ -W -Wall -Werror test.cpp
$> nm -C a.out
[...]
U _Unwind_Resume@@GCC_3.0
0000000000400a55 t __static_initialization_and_destruction_0(int, int)
0000000000400aa8 W Test::Test(int, int)
0000000000400aa8 W Test::Test(int, int)
0000000000400acc W Test::~Test()
0000000000400acc W Test::~Test()
0000000000400ad6 W Test::dump() const
[...]
$>