Jac*_*ach 0 c++ x86 gcc code-generation
当查看GCC 7.1为以下代码生成的x86-64asm时,我发现a
生成代码的构造函数虽然b
没有构造函数的标签.
class a {
public:
int aint;
a() { }
};
class b {
public:
int bint;
b() = default;
};
int main() {
a ac;
// lea rax, [rbp-4]
// mov rdi, rax
// call a::a()
ac.aint = 2;
// mov DWORD PTR [rbp-4], 2
b bc; // no instructions for this statement
bc.bint = 5;
// mov DWORD PTR [rbp-8], 5
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么这里为构造函数生成的代码会如此不同?为什么不a() { }
生成相同的代码b() = default
?