2016 - 2024

感恩一路有你

多线程使用malloc安全吗 C 11中的constexpr到底怎么用。只知道const不懂constexpr?

浏览量:1834 时间:2021-03-15 04:11:54 作者:admin

C 11中的constexpr到底怎么用。只知道const不懂constexpr?

Constexpr用于定义可在编译时计算的常量表达式。

1. 编译器时间常数函数,编译器可以计算函数的值。例如,可以用constexpr函数更好地替换某些宏函数。

2. 编译时常量数据,如一些在类和类模板中定义的静态常量数据,过去是用static const来定义的,现在可以用constexpr来定义,这样可以达到更好的效率和安全性。

c constexpr构造函数有什么作用?

将constexpr添加到构造函数时,构造函数只能为具有初始化列表的属性赋值。如果函数体为空,则构造函数可用于其他constexpr

constexpr表示一个函数或表达式可在编译时进行求值,并可用作常量,对于用constexpr构造函数创建的对象也是如此,它可用作常量

~,当代码中多次调用具有相同参数的函数时,使用默认参数可以减少传递的参数数量并简化代码。第二,当您需要提供一个默认值时,比如窗口的大小和默认的黑色。第三,用默认参数在构造函数中减少类中的一些复制,当第一个参数是类引用时,它可以复制构造函数。第四,使用const和constexpr变量作为默认参数与具体实现有关。第五,在某些情况下,使用默认参数可以发挥与重载函数相同的作用

在c入门第五版中,只有c涉及11,因此不支持static const int n u下面的答案假设您的文章来自c入门第五版。

本段中的常量静态数据成员是指同时添加constexpr和static关键字的数据成员。由于向其添加了constexpr,因此可以在类中定义初始值(通常,静态成员变量不能在类中定义)。constexpr的特性决定了初始值可以在类中定义,因为constexpr限制它必须是常量表达式。可以在编译时用相应的文本值替换所有constexpr变量。

因此,由constexpr和static关键字修改的数据成员实际上并不存在,而是由值替换。我想可能是为了方便。可能C只替换相应范围内的,所以它只替换类内的。因此,添加到类中的带有constexpr和static关键字的变量实际上并不存在,因此如果需要在类外部使用常量静态数据成员,还需要在类外部定义它

多线程使用malloc安全吗 将宏转换为constexpr const的三种用途

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。