1. 如果一个类不是聚合类,且符合:

● 数据成员都必须是字面值类型。
● 类必须至少含有一个constexpr构造函数
● 如果一个数据成员含有类内初始值,则内置类型成员的初始值必须是一条常量表达式;或者如果成员属于某种类类型,则初始值必须使用成员自己的constexpr构造函数。
● 类必须使用析构函数的默认定义,该成员负责销毁类的对象。(eg。当vector销毁时,其对象也被销毁)

2. constexpr构造函数

函数体既要返回,又不能返回,最终定为空。

class Debug{public:constexpr Debug(bool b=true):hw(b),io(b),other(b) {}constexpr Debug(bool h,bool i,bool o):hw(h),io(i),other(o) {}constexpr bool any() {return hw||io||other;}void set_io(bool b) {io=b;}void set_hw(bool b) {hw=b;}void set_other(bool b) {hw=b;}
private:bool hw;bool io;bool other;
};

举例:

constexpr Debug io_sub(false,true,false);  //调试IO
if(io_sub.any())  //等价于if(true)cerr<<"print appropriate error messages"<<endl;
constexpr Debug prod(false);  //无调试
if(prod.any())  //等价于if(false)cerr<<"print an error message"<<endl;

C++ Primer 5th笔记(7)chapter7 类:字面值常量类相关推荐

  1. C++Primer:字面值常量类调用函数错误(p268书中示例报错)

    1. 背景   在阅读到C++Primer第268页时发现其示例编写好后程序报错. #include <iostream> using namespace std; class Debug ...

  2. C++ Primer 5th笔记(7)chapter7 类:类的静态成员

    ● 不能声明为const 的,而且也不能在static 函数体内使用this 指针 ● 在类外部定义静态成员,不能重复使用 static 关键字. void Account::rate(double ...

  3. C++ Primer 5th笔记(chap 18 大型程序工具)类型转换与多个基类

    1. 在只有一个基类的情况下, 派生类的指针或引用能自动转换成一个可访问基类的指针或引用. 我们可以令某个可访问基类的指针或引用直接指向一个派生类对象. eg. 一个ZooAnimal. Bear 或 ...

  4. C++ Primer 5th笔记(chap 19 特殊工具与技术)嵌套类

    1. 嵌套类( nested class)或嵌套类型( nested type ) 一个类可以定义在另一个类的内部,这个类常用于定义作为实现部分的类. class TextQuery {public: ...

  5. C++ Primer 5th笔记(chap 15 OOP)派生类的拷贝控制成员

    当派生类定义了拷贝.赋值.移动操作时,该操作负责拷贝.赋值.移动包括基类部分成员在内的整个对象. 1.1 定义派生类的拷贝或移到构造函数 class Base { /* ... */ };class ...

  6. C++ Primer 5th笔记(chap 15 OOP)继承之派生类

    1. 构造函数 每个类控制它自己的成员初始化过程:尽管派生类包含了从基类继承而来的成员,但是派生类不能直接初始化这些成员,而是需要使用基类的构造函数来初始化它们. 派生类对象的基类部分与派生类对象自己 ...

  7. C++ Primer 5th笔记(chap 13 拷贝控制) 对象移动

    1. 为什么要有对象移动 使用移动而非拷贝对象能够大大提升性能. 一些不能被共享的资源类的对象不能拷贝但是可以移动.eg. IO 类 unique_ptr 类 2. 如何做到对象移动 2.1 什么是右 ...

  8. c++ primer 5th 笔记

    第1章 开始 本章以一个实际问题,书店问题,来简单的介绍C的基本特性.这个问题的代码将贯彻整本书,后面的章节会逐一讲解代码中涉及到的 C 语言特性. 这个问题具体,就是要保存书店的所有销售记录的档案, ...

  9. C++ Primer 5th笔记(chap 18 大型程序工具)构造函数与虚继承

    1. 继承体系中的每个类都可能在某个时刻成为" 最低层的派生类". 只要我们能创建虚基类的派生类对象, 该派生类的构造函数就必须初始化它的虚基类. Bear::Bear (std: ...

  10. C++ Primer 5th笔记(chap 18 大型程序工具)虚继承

    1. 问题 派生类可以多次继承同一个类. 派生类可以通过它的两个直接基类分别继承同一个间接基类, 也可以直接继承某个基类, 然后通过另一个基类再一次间接继承该类.如果某个类在派生过程中出现了多次, 则 ...

最新文章

  1. DenseNet网络结构产生的.py文件出错解决
  2. VTK:Filtering之LandmarkTransform
  3. 拥有一台你的轻量应用服务器Lighthouse
  4. ASP.NET Core中使用IOC三部曲(二.采用Autofac来替换IOC容器,并实现属性注入)
  5. spring读取properties配置文件_Spring-1
  6. 使用Response.Filter过滤非法词汇
  7. 欲取代硬盘?SSD固态存储器前景分析
  8. C#.NET验证码智能识别学习笔记---05C#.Net图片预处理
  9. keras中TimeDistributed的用法
  10. Hadoop_23_oozie
  11. matlab仿真怎么添加干扰信号,噪声干扰信号的matlab仿真
  12. 跳跳棋(国家集训队,LCA,洛谷P1852,BZOJ[2144])
  13. 钰泰ETA8113,ETA8120,ETA8121降压转换器,2A/3A电流,OVP保护
  14. matlab浊音段和清音段,基于Matlab编写的语音端点检测1
  15. 自制Base64编码解码器
  16. Windows2000、XP、2003系统万能Ghost全攻略(转)
  17. Tableau 与 Power BI的比较
  18. 听说Mysql你很豪横?-------------呕心沥血深入解析mysql备份与恢复!!!
  19. MacBook随笔之快捷键二(访达和系统快捷键)
  20. C#必看:《第17章节QQ管理系统》

热门文章

  1. 响应格式html,设置响应格式的HTML邮件
  2. 魅族升级鸿蒙,魅族要“弯道超车”?率先升级鸿蒙OS,挥别安卓系统
  3. aspx网页背景图片设置代码_python 30行代码自动填写问卷(单选题和多选题)
  4. 博科b8网络版定位服务器位置,如何在企业服务器中采集奥维GPS定位设备的位置...
  5. 据中心水冷系统备品备件管理新思路
  6. ML:MLOps系列讲解之《MLOps Stack Canvas堆栈画布》解读
  7. 成功解决pandas\core\generic.py:3660: SettingWithCopyWarning:  A value is trying to be set on a copy of a
  8. pyaudio:基于pyaudio利用Python编程从电脑端录制音频保存到指定文件夹+将录音上传服务器+录音进行识别并转为文本保存
  9. PyQt:成功解决PyQt4升级到PyQt5改变的函数或方法
  10. BlockChain:互联网与区块链之间的那些事(P2P下载、P-CDN、分布式计算、社交媒体、P2P借贷、众筹、区块链、自组织)