C++11 constexpr函数

  constexpr函数是指能用于常量表达式的函数,定义constexpr的方式和其他函数的定义方式一样,但存在下面两个约束:

  1、函数的返回值必须为字面值常量;

  2、函数体中必须且只有一个return语句;

constexpr int new_sz(){return 42;}

constexpr函数时被隐式地指定为内联函数的

  constexpr函数体内也可以有其他的语句,只要运行时不执行任何操作即可,比如空语句,类型别名,using声明;我们允许constexpr函数的返回值并非一个常量:

constexpr size_t scale(size_t cnt){ return new_sz()*cnt; }

当scale的形参cnt为常量表达式时,其返回值也为常量表达式,如果cnt传入的是一个类型为size_t的变量a,那么其返回值就不是常量表达式。

  和其他函数不一样的是,内联函数和constexpr函数可以在程序中多次定义, 不过某个给定的内敛函数或者constexpor函数来说,其定义必须是一致的,这样我们尽量要将内联函数和

constexpr函数通常定义在头文件中。

时间: 2024-10-25 19:02:52

C++11 constexpr函数的相关文章

特殊用途语言特性:默认实参,内联函数和constexpr函数,调试帮助

重点: 1.三种函数相关的语言特性:默认实参,内联函数和constexpr函数. 2.默认实参:某些函数有一种形参,在函数的很多次调用中它们都被赋予一个相同的值. 3.一旦某个形参被赋予了默认值之后,它后面的所以形参都必须要默认值. 4.若想使用默认形参,只要在调用函数时省略该实参即可. Tip:Window = screen ( , , ‘?’ );//错误:只能省略尾部的实参! 5.对于函数的声明来说,习惯将其放在头文件当中,在给定的作用域中一个形参只能赋予一次默认实参. NOTE:通常,应

【C++ Primer 第六章】 constexpr函数

constexpr函数 constexpr函数: constexpr函数是指用于常量表达式的函数,函数的返回值类型以及所有的形参类型必须是字面值,而且函数必须有且只有一条return语句. 1 [tect2.cpp] 2 #include <iostream> 3 using namespace stdl; 4 5 constexpr int screen(int x) // constexpr 6 { 7 return x; 8 } 9 10 int main() 11 { 12 const

PHP 11:函数

原文:PHP 11:函数 本文章介绍PHP的函数.如何学习呢?可以从以下几个方面考虑 函数是如何定义的?区分大小写吗? 函数的参数是如何定义的? 函数是否支持重载? 函数的返回值是如何定义的. 函数有变量函数吗? 如果把上面的问题搞清楚了,相信函数你也就掌握了.还是一个个看吧.  函数是如何定义的?区分大小写吗? 首先函数对大小写不敏感.但是还是建议你采用和函数声明时的一样.        函数是如何定义的呢?语法可以为: <?phpfunction func($arg_1, $arg_2, ,

【C++ 基础 11】 函数指针总结

在家学习的效率真是惨不忍睹.. =========================== 1 指针函数 int* f(int a, int b); 返回一个指向int类型的指针. 2 函数指针 2.1 声明 返回类型 (*函数名)(参数列表); 2.2 示例 int max(int a, int b) { return a > b ? a : b; } int min(int a, int b) { return a < b ? a : b; } int (*f)(int, int); // 声

constexpr函数------c++ primer

constexpr函数是指能用于常量表达式的函数.定义constexpr函数的方法有其他函数类似,不过要遵循几项约定:函数的返回值类型及所以形参的类型都是字面值类型,而且函数体中必须有且只有一条return语句.为了能在编译过程中随时展开,constexpr函数被隐式指定地指定为内联函数. constexpr函数体内也可以包含其他语句,只要这些语句在运行时不执行任何操作就行.例如,constexpr函数中可以有空语句.类型别名以及using声明. 允许constexpr函数的返回值并非一个常量:

11、函数对象、函数的嵌套、名称空间与作用域

一.函数对象 函数对象,函数是第一类对象,即函数可以当做数据传递 具体特点: 1.可以被引用: 1 def foo(): 2 print('from foo') 3 4 func=foo 5 6 print(foo) 7 print(func) 8 func() 2.可以当作参数传递 1 def foo(): 2 print('from foo') 3 4 def bar(func): 5 print(func) 6 func() 7 8 bar(foo) 3.返回值可以是函数 1 def fo

11. PoweShell - 函数

PowerShell 函数 介绍 PowerShell脚本中,可以将常用的代码块集成在一个函数内,这样提高脚本的高可用性和易维护性:当需求变化发生时候,只需改进或删除对应的代码块即可: 代码块即函数:函数使用"$input"变量来从管道中获取信息:函数,在获取数据时,$input变量会接受所有的信息: 筛选器 它是函数的一种特殊形式,使用"$_"变量来从管道中获取信息:在获取信息时,$_变量会一边接受来自管得符的信息,一边进行筛选(运算)操作: 对于函数:管道符将数

5月11日 函数、练习:阶乘累加求和

一.函数:  一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能.所有的高级语言中都有子程序这个概念,用子程序实现模块的功能.在C#语言中,子程序的作用是由一个主函数和若干个函数构成.由主函数调用其它函数,其它函数也可以互相调用.同一个函数可以被一个或多个函数调用任意多次. 在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用.要善于利用函数,以减少重复编写程序段的工作量. namespace _5月11日_函数 { class Program { //没有

python 核心编程 11章函数 练习

#encoding=utf-8# 11-3 函数.在这个练习中,我们将实现 max()和 min()内建函数.# (a) 写分别带两个元素返回一个较大和较小元素,简单的 max2()核 min2()函数.他们应该可以# 用任意的 python 对象运作.举例来说,max2(4,8)和 min2(4,8)会各自每次返回 8 和 4.# (b) 创建使用了在 a 部分中的解来重构 max()和 min()的新函数 my_max()和 my_min().这些函# 数分别返回非空队列中一个最大和最小值.