C++ Primer 5th笔记(7)chapter7 类:字面值常量类
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 类:字面值常量类相关推荐
- C++Primer:字面值常量类调用函数错误(p268书中示例报错)
1. 背景 在阅读到C++Primer第268页时发现其示例编写好后程序报错. #include <iostream> using namespace std; class Debug ...
- C++ Primer 5th笔记(7)chapter7 类:类的静态成员
● 不能声明为const 的,而且也不能在static 函数体内使用this 指针 ● 在类外部定义静态成员,不能重复使用 static 关键字. void Account::rate(double ...
- C++ Primer 5th笔记(chap 18 大型程序工具)类型转换与多个基类
1. 在只有一个基类的情况下, 派生类的指针或引用能自动转换成一个可访问基类的指针或引用. 我们可以令某个可访问基类的指针或引用直接指向一个派生类对象. eg. 一个ZooAnimal. Bear 或 ...
- C++ Primer 5th笔记(chap 19 特殊工具与技术)嵌套类
1. 嵌套类( nested class)或嵌套类型( nested type ) 一个类可以定义在另一个类的内部,这个类常用于定义作为实现部分的类. class TextQuery {public: ...
- C++ Primer 5th笔记(chap 15 OOP)派生类的拷贝控制成员
当派生类定义了拷贝.赋值.移动操作时,该操作负责拷贝.赋值.移动包括基类部分成员在内的整个对象. 1.1 定义派生类的拷贝或移到构造函数 class Base { /* ... */ };class ...
- C++ Primer 5th笔记(chap 15 OOP)继承之派生类
1. 构造函数 每个类控制它自己的成员初始化过程:尽管派生类包含了从基类继承而来的成员,但是派生类不能直接初始化这些成员,而是需要使用基类的构造函数来初始化它们. 派生类对象的基类部分与派生类对象自己 ...
- C++ Primer 5th笔记(chap 13 拷贝控制) 对象移动
1. 为什么要有对象移动 使用移动而非拷贝对象能够大大提升性能. 一些不能被共享的资源类的对象不能拷贝但是可以移动.eg. IO 类 unique_ptr 类 2. 如何做到对象移动 2.1 什么是右 ...
- c++ primer 5th 笔记
第1章 开始 本章以一个实际问题,书店问题,来简单的介绍C的基本特性.这个问题的代码将贯彻整本书,后面的章节会逐一讲解代码中涉及到的 C 语言特性. 这个问题具体,就是要保存书店的所有销售记录的档案, ...
- C++ Primer 5th笔记(chap 18 大型程序工具)构造函数与虚继承
1. 继承体系中的每个类都可能在某个时刻成为" 最低层的派生类". 只要我们能创建虚基类的派生类对象, 该派生类的构造函数就必须初始化它的虚基类. Bear::Bear (std: ...
- C++ Primer 5th笔记(chap 18 大型程序工具)虚继承
1. 问题 派生类可以多次继承同一个类. 派生类可以通过它的两个直接基类分别继承同一个间接基类, 也可以直接继承某个基类, 然后通过另一个基类再一次间接继承该类.如果某个类在派生过程中出现了多次, 则 ...
最新文章
- DenseNet网络结构产生的.py文件出错解决
- VTK:Filtering之LandmarkTransform
- 拥有一台你的轻量应用服务器Lighthouse
- ASP.NET Core中使用IOC三部曲(二.采用Autofac来替换IOC容器,并实现属性注入)
- spring读取properties配置文件_Spring-1
- 使用Response.Filter过滤非法词汇
- 欲取代硬盘?SSD固态存储器前景分析
- C#.NET验证码智能识别学习笔记---05C#.Net图片预处理
- keras中TimeDistributed的用法
- Hadoop_23_oozie
- matlab仿真怎么添加干扰信号,噪声干扰信号的matlab仿真
- 跳跳棋(国家集训队,LCA,洛谷P1852,BZOJ[2144])
- 钰泰ETA8113,ETA8120,ETA8121降压转换器,2A/3A电流,OVP保护
- matlab浊音段和清音段,基于Matlab编写的语音端点检测1
- 自制Base64编码解码器
- Windows2000、XP、2003系统万能Ghost全攻略(转)
- Tableau 与 Power BI的比较
- 听说Mysql你很豪横?-------------呕心沥血深入解析mysql备份与恢复!!!
- MacBook随笔之快捷键二(访达和系统快捷键)
- C#必看:《第17章节QQ管理系统》
热门文章
- 响应格式html,设置响应格式的HTML邮件
- 魅族升级鸿蒙,魅族要“弯道超车”?率先升级鸿蒙OS,挥别安卓系统
- aspx网页背景图片设置代码_python 30行代码自动填写问卷(单选题和多选题)
- 博科b8网络版定位服务器位置,如何在企业服务器中采集奥维GPS定位设备的位置...
- 据中心水冷系统备品备件管理新思路
- ML:MLOps系列讲解之《MLOps Stack Canvas堆栈画布》解读
- 成功解决pandas\core\generic.py:3660: SettingWithCopyWarning: A value is trying to be set on a copy of a
- pyaudio:基于pyaudio利用Python编程从电脑端录制音频保存到指定文件夹+将录音上传服务器+录音进行识别并转为文本保存
- PyQt:成功解决PyQt4升级到PyQt5改变的函数或方法
- BlockChain:互联网与区块链之间的那些事(P2P下载、P-CDN、分布式计算、社交媒体、P2P借贷、众筹、区块链、自组织)