小樱知识 > 生活常识 > define(「C++」define、const、constexpr分别有哪些特点)

define(「C++」define、const、constexpr分别有哪些特点)

提问时间:2022-11-18 07:24:56来源:小樱知识网


C++中,常见的常量类型定义方法有define、const、constexpr,那么他们分别有什么特点呢?

时间维度

作用目标

优缺点

范例

define

预编译期:

进行字符串模板的替换。

字符串

代码不会进行类型检查:

符号丢失、

没有范围、

没有类型

#define MAX_TEST_COUNT 5

const

编译期:

对常量的只读性进行限制。

从而在运行期可以保证常量是只读的,不能改变。

对象/变量

cont修饰的变量也不能保证一定不会被修改。

const int i_g_count = 10;

const string s_g = "abcd";

const char * const p_c_g_str = "bdef";

constexpr

编译期:

对常量的只读性进行限制。

在编译期就把结果计算出来并进行替换了。

在函数内部定义时,是运行期把结果计算并赋值)。

对象/变量

简化模板元编程,使得模板元编程变得合理且可接受的。

constexpr int i_g_count = 10;

注意:cont修饰的变量也不能保证一定不会被修改

比如string和char *变量,可以通过强制对字符数组某个元素进行修改。

//先去const属性再引用,然后修改。 void test() { //范例1 const string name = "abcd"; string& str = const_cast<string&>(name); str[0] = 'x'; cout << str << endl;//输出xbcd //范例2 string str_new = "xyz"; const char* temp = str_new.c_str(); char* str2 = (char*) temp; str2[0] = 'm'; cout << str2 << endl;//输出myz }

原创不易,欢迎关注、转发、点赞、收藏!

以上内容就是为大家推荐的define(「C++」define、const、constexpr分别有哪些特点)最佳回答,如果还想搜索其他问题,请收藏本网站或点击搜索更多问题

内容来源于网络仅供参考
二维码

扫一扫关注我们

版权声明:所有来源标注为小樱知识网www.cnfyy.com的内容版权均为本站所有,若您需要引用、转载,只需要注明来源及原文链接即可。

本文标题:define(「C++」define、const、constexpr分别有哪些特点)

本文地址:https://www.cnfyy.com/shcs/798420.html

相关文章