相关疑难解决方法(0)

默认初始化和值初始化结构的性能不同

我有一个带数组的简单结构:

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, …

c++ arrays initialization

4
推荐指数
1
解决办法
363
查看次数

标签 统计

arrays ×1

c++ ×1

initialization ×1