Effective C++ Notebook
一,让自己习惯c++
Accustoming Yourself to C++
1,尽量以const, enum, inline替换#define
Prefer consts and inlines to #defines.
请记住
对于单纯常量,最好以const对象或mums替换#defines。
对于形似函数的宏(macros ),最好改用inline函数替换#defines。
2 尽可能使用const
Use const whenever possible.
请记住
.将某些东西声明为const可帮助编译器侦测出错误用法。const可被施加于任
何作用域内的对象、函数参数、函数返回类型、成员函数本体。
.当const和non-const成员函数有着实质等价的实现时,令non-const版本调
用const版本可避免代码重复。
3, 确定对象被使用前已先被初始化
Make sure that objects are initialized before they're used.
请记住
.为内置型对象进行手工初始化,因为c++什不保证初始化它们。
.构造函数最好使用成员初值列(member initialization list ),而不要在构造函数
本体内使用赋值操作(assignment )。初值列列出的成员变量,其排列次序应该
和它们在class中的声明次序相同。
.为免除“跨编译单元之初始化次序”问题,请以local static对象替换non-local
static对象。
二、构造/析构/赋值运算
Constructors, Destructors, and Assignment Operators
1,了解C++默默编写并调用哪些函数
Know what functions C++ silently writes and calls.
请记住
.编译器可以暗自为class创建default构造函数、copy构造函数、copy assignment 操作符,以及析构函数。
2,若不想使用编译器自动生成的函数,就该明确拒绝
Explicitly disallow the use of compiler-generated you do not want.
为驳回编译器自动(暗自)提供的机能,可将相应的成员函数声明为private并且
不予实现。使用像Uncopyable这样的base class也是一种做法。
3,为多态基类声明virtual析构函数
Declare destructors virtual in polymorphic base classes.
.polymorphic(带多态性质的)base classes应该声明一个virtual析构函数。如果
class带有任何virtual函数,它就应该拥有一个virtual析构函数。
.Classes的设计目的如果不是作为base classes使用,或不是为了具备多态性
< polymorphically ),就不该声明virtual析构函数。
4,绝不在构造和析构过程中调用virtual函数
Never call virtual functions during construction or destruction.
在构造和析构期间不要调用virtual函数,因为这类调用从不下降至derived class
(比起当前执行构造函数和析构函数的那层)。
Effective C++ Notebook相关推荐
- Jupyter Notebook基础(6)Jupyter Notebook命令行命令帮助
Jupyter Notebook当前版本为6.3.0. Jupyter命令行命令 jupyter命令是整个Jupyter项目命令的命名空间,单独执行jupyter命令无任何意义. jupyter命令的 ...
- An example machine learning notebook
原文地址 An example machine learning notebook Notebook by Randal S. Olson Supported by Jason H. Moore Un ...
- 如何在本地访问远程服务器的jupyter notebook?
背景 jupyter notebook作为一个非常好用的工具,我们经常会在学习python以及深度学习的时候用到,但是经常我们面临的问题是远程服务器上的jupyter notebook,我们可能在本地 ...
- Python | 安装Jupyter Notebook及其目录的更改 jupyter问题
20211223 在非输入出双击d删除单元格 20211218 https://www.jianshu.com/p/c51f9504d84f jupyter,ipynb转py 20211117 htt ...
- Jupyter Notebook 远程访问设置方法
1. 设置密码 In [1]: from notebook.auth import passwd In [2]: passwd() Enter password: Verify password: O ...
- Ubuntu 安装 IPython、jupyter notebook
1. 升级 pip sudo pip3 install --upgrade pip 2. 安装 IPython IPython 5.x 是最后一个支持 Python2 的 IPython . sudo ...
- Effective C++ 50条款
Effective C++ 50条款 条款 1:尽量用 const 和 inline 而不用#define--尽量用编译器而不用预处理 #define max(a,b) ((a) > (b) ? ...
- Python的必学技术——Jupyter Notebook
推荐 Jupyter NoteBook 的原因:整合所有的资源.交互性编程体验和零成本重现结果. Jupyter NoteBook 能够把软件代码.计算输出.解释文档.多媒体资源整合在一起的多功能科学 ...
- Anaconda中pytorch环境搭建(包括详细的虚拟环境创建,以及虚拟环境中jupyter notebook的使用)
PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序. 2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch.它是一个 ...
- Windows下超详细安装Anaconda3以及jupyter notebook
Anaconda是一个软件包管理器,一个环境管理器以及一个Python发行版,其中包含许多开源软件包的集合(numpy,scikit-learn,scipy,pandas等).如果在安装Anacond ...
最新文章
- pLSQL中文乱码问题
- STL容器汇总(一)
- 实验8.2 指针与字符串 6-2 删除字符
- AWS上的应用程序自动扩展–选项及其对性能的影响
- QScrollArea不能显示滚动条
- 无限极 php算法,无限极分类算法,对你一定有帮助
- java.net.MalformedURLException: unknown protocol: c 这个错一般有两种原因导致: 1、URL协议、格式或者路径错误,...
- [持续更新]先进OpenGL编程注意事项
- 专业的统计分析软件 IBM SPSS Statistics 26 Mac版(附带安装包网盘资源)
- PHP 二元线性拟合函数
- Swift 读写 plist 文件
- 一枚菜鸟前端工程师月度工作总结
- Windows上查看MTU值和修改MTU的方法
- 可移动文物快速三维建模
- 【自省篇】软件开发七宗罪
- 利用感知机实现鸢尾花分类问题
- 这是一份优秀的餐饮行业微信营销解决方案
- java查找算法:线性查找
- 自由传奇|为你的队伍加油!
- 如何让Markdown 表格整体居中?
热门文章
- 绝对引用计算机几级,计算机一级必考的14个Excel函数,让我来告诉你
- 句柄即GetSafeHwnd的作用
- 等比缩放公式_CVPR2019 | 旷视提出MetaSR:单一模型实现超分辨率任意缩放因子
- python中pickle模块无法导入_python pickle模块
- java jdk使用教程_java初学者实践教程2-jdk的使用
- Mysql: mysqlbinlog命令查看日志文件
- 移动app设计公司流程—APP设计需求分析规范
- 【15.03.13】手动快速在Linux桌面上添加一个程序图标快捷方式
- 解决 vim 中文编码问题
- Symfony 2.0 认识Request, Response, Session, Cookie