随笔分类 - c++ / c++11
摘要:constexptr和常量表达式常量表达式是指值不会改变并且在编译过程中就能得到计算结果的表达式。 编译过程中得到计算结果。 字面值属于常量表达式,用常量表达式初始化的const对象也是常量表达式。 一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定。 (注意!!!)对于这条语句:c
阅读全文
摘要:1.用constexpr修饰变量 1.1 const 在 C++11 之前只有 const 关键字,从功能上来说这个关键字有双重语义:变量只读,修饰常量,举一个简单的例子: void func(const int num) { const int count = 24; int array[num]
阅读全文
摘要:C++中const和constexpr的作用很多C++的初学者看到const这个关键字的第一反应都是一头雾水,主要是因为const可以出现在很多的位置,以及后面加入的constexpr更是常常感到困惑,今天就为大家一一解释出现它们的含义和以及作用 const关键字const修饰变量这是最基本的一种用
阅读全文
摘要:constexpr表达式是指值不会改变并且在编译过程就能得到计算结果的表达式。声明为constexpr的变量一定是一个const变量,而且必须用常量表达式初始化: constexpr int mf = 20; //20是常量表达式constexpr int limit = mf + 1; // mf
阅读全文
摘要:1. 常量表达式 是指值不会改变,并且在编译过程就能得到计算结果的表达式。这是很大的优化:假如有些事情可以在编译时做,它将只做一次,而不是每次程序运行时都计算。 1)字面值常量是常量表达式,如123,'a',3.14等。 2)跟字面值常量相关的一些表达式也是常量表达式,如123+3.14,2<<2等
阅读全文
摘要:constexpr 是 C++ 11 标准新引入的关键字,不过在讲解其具体用法和功能之前,读者需要先搞清楚 C++ 常量表达式的含义。 所谓常量表达式,指的就是由多个(≥1)常量组成的表达式。换句话说,如果表达式中的成员都是常量,那么该表达式就是一个常量表达式。这也意味着,常量表达式一旦确定,其值将
阅读全文
摘要:C++11中新增加了用于指示常量表达式的constexpr关键字。在这里区分两者的用法。 基本含义/语法 const和constexpr都可以来修饰对象和函数。 修饰对象的时候两者之间最基本的区别是: const修饰一个对象表示它是常量。这暗示对象一经初始化就不会再变动了,并且允许编译器使用这个特点
阅读全文
摘要:一、在普通函数中的使用 例如下面的代码, 数组的大小必须是常量,在声明数组array时,用函数返回值,此时会报错: error C2131: 表达式的计算结果不是常数 note: 对未定义的函数或为未声明为“constexpr”的函数的调用导致了故障 用constexpr关键字可以解决这种问题,在G
阅读全文
摘要:前言指针是一种保存变量地址的变量,简单指针容易分析,但是当指针稍微复杂,就很容易无从下手,比如: char *(*(**foo[][8])())[]; 1下面将会由浅入深的探究指针 普通指针#include <cstdio>#include <iostream> using namespace st
阅读全文
摘要:前面我们讲解了指针数组、二维数组指针、函数指针等几种较为复杂的指针,它们的定义形式分别是: 我相信大部分初学者对上面几种形式的指针都非常迷惑,不知道该从哪里入手去理解,为什么p1、p2 是数组,而 p3 却是指针呢,它们仅仅是一个括号的区别。 指针是C语言中最强大最灵活的一部分,也是最难以理解的一部
阅读全文
摘要:声明:1. 文章如有不妥的地方,请您指正,谢谢. 2.另外文中有些细节可能引用您的内容却未给出参考,请原谅我的疏忽,你的共享我不会忘记. 3. Email:lizhiguo0532@163.com 李枝果/lizgo 4. 转载请保留该部分信息 //两个原则//右左法则:首先从最里面的圆括号看起,然
阅读全文
摘要:目录0、摘要 1、指针函数 2、函数指针 3、函数指针数组 4、将函数作为传参传入另一个函数 5、以下两个指针能分析清楚的话,那么 99% 的 C 语言指针问题都难不住你。 参考: 0、摘要指针函数是返回指针的函数,函数指针是指向函数的指针。 int* FunctionReturnsPtr(int
阅读全文
摘要:五、constexpr说明符 constexpr说明符声明该变量或函数在编译期进行求值,从而适用于需要编译器常量表达式的地方 在变量声明constexpr时,对象或非静态成员函数蕴含const,函数或静态成员变量蕴含inline constexpr变量必须立刻被初始化 constexpr int a
阅读全文
摘要:一、 常量表达式:是指值不会改变并且在编译过程就能得到的计算结果的表达式。 定义常量表达式变量: constexpr 变量类型 变量名; 例如: constexpr int mf=20;/////20是常量表达式 constexpr int limit=mf+1;/////mf+1是常量表达式 co
阅读全文
摘要:文章目录1 const 常量的判别准则1.1 编程实验2 小结 看了前面的关于 const 的内容,不知道是不是有疑问,const 什么时候为只读变量,什么时候是常量?1 const 常量的判别准则只有用字面量初始化的 const 常量才会进入符号表使用其他变量初始化的 const 常量仍然是只读变
阅读全文
摘要:我知道 constexpr 允许您在编译时将对象用作常量,但是什么时候这会有益呢?我试图更好地理解关键字,但我找不到一个很好的例子来解释为什么需要它的构造函数。 下面的两个例子都有效,那么为什么要将 constexpr 放在构造函数上呢? 在构造函数上使用 constexpr: #include <
阅读全文
摘要:目录 一、decltype关键字 二、decltype的推导规则 1、表达式为单独变量 2、表达式为函数调用 3、表达式为左值,或者被()包围 三、 decltype的应用 在前面一章,小编已经对auto类型推导这个关键字进行了介绍,相信小伙伴们都知道了auto的用法以及限制了吧,不知道的小伙伴回头
阅读全文
摘要:系列文章C++11之正则表达式(regex_match、regex_search、regex_replace) C++11之线程库(Thread、Mutex、atomic、lock_guard、同步) C++11之智能指针(unique_ptr、shared_ptr、weak_ptr、auto_pt
阅读全文
摘要:前言记录下阅读此书的感想与总结,一方面能巩固复习,另一方面也能更好地浓缩本书的精华,方便日后的回看。 第五章 右值引用、移动语义和完美转发它们带来的好处 移动语义使得编译器能使用效率更高的移动操作来替换昂贵的复制操作移动语义使得创建只移对象成为可能,如:std::unique_ptr, td::th
阅读全文
摘要:左值、右值、左值引用以及右值引用 std::move和std::forward这两个API主要服务于左值引用和右值引用的转化和转发,因此再了解这两个API之前,需要先弄清楚这几个概念。 左值:一般指的是在内存中有对应的存储单元的值,最常见的就是程序中创建的变量 右值:和左值相反,一般指的是没有对应存
阅读全文