我很好奇,如果编译器生成的默认构造函数和析构函数是内联或不是,因为我可以证明它的任何方式。一方面,您希望默认构造函数/析构函数为而不是为内联,以便稍后添加它们不会中断ABI(因为只有默认值时编译的对象文件将内置生成的定义而不是您定义的内容)。另一方面,为了让C++编译器能够编译C代码,并且能够在使用C编译器编译时执行它,它不能为每个分配的结构添加构造函数/析构函数调用,并且在C++中,类之间唯一的功能差异并且一个结构应该是默认的访问保护。也许链接器解决这个问题?也许答案在编译器中有所不同?默认构造函数和析构函数是否内联?
这个问题的后果:如果我在C++中有一个POD结构,我理论上可以通过定义空的内联构造函数/析构函数来取代默认值,从而在某些编译器下受益?
'class'和'struct'关键字之间的区别是不应该的。 – 2011-06-08 03:50:49
@Luc:假设这是一种暗箱,我可以看到编译器不符合标准。 – 2011-06-08 03:54:48