[英]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.