美文网首页C++2.0
C++11精进:从运行期转到编译期

C++11精进:从运行期转到编译期

作者: Brent姜 | 来源:发表于2017-04-28 22:06 被阅读25次

概述

C++11提供了新的机制,可以让程序员将代码从运行期执行转到编译期执行,为程序提供优化途径。

constexpr

大多数人可能听说过constexpr,这个新的关键字指示编译期在编译期间执行代码并获得常量值,这样变量或函数可以用在常量表达式中。

constexpr可以用于修饰对象,也可以修饰函数,包括两种:

  • constexpr Objects:一个constexpr对象是常量,而且它的值在编译期间可知。
  • constexpr Functions:意思差不多是如果你使用constexpr变量在constexpr上下文中使用,它会给你返回一个constexpr对象。但实际使用起来会有一些微妙的地方,

两者相当不同。

constexpr Objects


参考资料

[1] 《Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14(英语)》,Scott Meyers在2015年的大作。

相关文章

  • C++11精进:从运行期转到编译期

    概述 C++11提供了新的机制,可以让程序员将代码从运行期执行转到编译期执行,为程序提供优化途径。 constex...

  • 《Oracle Java SE编程指南》17-02:编译期类型与

    内容导航: 前言 1、编译期类型和运行期类型相同 2、编译期类型和运行期类型不同 1、编译期类型和运行期类型相同 ...

  • 深入Java虚拟机:多态性实现机制--动态单分派和静态多分派

    分派发生在编译期和运行期,编译期的分派为静态分派,运行期的为动态分派。编译期是根据对象声明的类型来选择方法,运行期...

  • Java 静态多分派&动态单分派

    分派发生在编译期和运行期,编译期的分派为静态分派,运行期的为动态分派。 编译期是根据对象声明的类型来选择方法,运行...

  • 十七:Java基础入门-Java的错误类型

    程序的错误分为编译期语法错误、运行期异常错误和运行期逻辑错误。 编译期语法错误可以借助IDE(集成开发环境,常见有...

  • 编译期和运行期

    对于语句NSString *obj = [[NSData alloc] init]; obj在编译时和运行时分别是...

  • java编译期和运行期

    何为运行期?何为编译期? 编译期是指编译器将源代码翻译为机器能识别的代码,java为编译为jvm认识的字节码文件。...

  • Java基础-String可以多长

    主要分编译期和运行期。1.编译期 这样定义的字符串在编译期就已经确定了,aaa字符串存放在方法区的常量池。代码编译...

  • java Day01

    Day01 Java编译过程 1 编译期:java源文件经过编译,生成.class字节码文件 2 运行期 JVM加...

  • maven scope总结

    compile:默认的scope,运行期有效,需要打入包中provided:编译期有效,运行期不需要提供,不会打入...

网友评论

    本文标题:C++11精进:从运行期转到编译期

    本文链接:https://www.haomeiwen.com/subject/rbctzttx.html