我有一个带数组的简单结构:
struct A
{
uint32_t arr[size];
};
Run Code Online (Sandbox Code Playgroud)
我有两个函数,使用默认初始化和值初始化创建它:
template<class T>
void testDefault()
{
T* pa = new T; // Default
use(*pa);
delete pa;
}
template<class T>
void testValue()
{
T* pa = new T(); // Value
use(*pa);
delete pa;
}
Run Code Online (Sandbox Code Playgroud)
我面临着这些功能的不同表现.有趣的是,性能差异取决于我如何声明结构的默认构造函数.我有三种方式:
struct A
{
uint32_t arr[size];
// Implicit constructor
};
struct B
{
uint32_t arr[size];
B() {}; // Empty constructor
};
struct C
{
uint32_t arr[size];
C() = default; // Defaulted constructor
};
Run Code Online (Sandbox Code Playgroud)
从编译器的角度来看,我认为它们都是一样的.从来没有我这么错.我也同时运行testDefault(),并testValue()与结构数次A, …