繁体   English   中英

用C ++进行const初始化

[英]const initialisation with C++

在以下方面有什么区别:

#include <iostream>

using namespace std;

int get_value(int value){
   return 3 * value;
}


int main(int argc, const char * argv[])
{ 

   const int a = 5;
   const int b = get_value(4);


   return 0;
}

唯一的区别是const int a存储在bss节中,而const int b没有存储,并且两者仍然由编译器强制执行。

因此,由于a in存储在bss中,它更快吗? 由于const是在计算编译时间时,这是constexpr的用例吗? constexpr会使const存储在bss节中的b中吗?

布莱尔

由于您在问题中包含constexpr标记,因此我假设您可以使用C ++ 11 constexpr,因此可以将函数更改为constexpr int get_value(constexpr int value); 然后使用类似constexpr int b = get_value(4);的函数constexpr int b = get_value(4); 这将确保计算将在编译时完成,并且b可以由编译器优化,例如前处理常量。 但是,如果在程序中的任何位置,您都可以得到指向b的指针(例如int* p = &b ),则b没有经过优化,因此在运行时存储在内存中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM