一,让自己习惯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相关推荐

  1. Jupyter Notebook基础(6)Jupyter Notebook命令行命令帮助

    Jupyter Notebook当前版本为6.3.0. Jupyter命令行命令 jupyter命令是整个Jupyter项目命令的命名空间,单独执行jupyter命令无任何意义. jupyter命令的 ...

  2. An example machine learning notebook

    原文地址 An example machine learning notebook Notebook by Randal S. Olson Supported by Jason H. Moore Un ...

  3. 如何在本地访问远程服务器的jupyter notebook?

    背景 jupyter notebook作为一个非常好用的工具,我们经常会在学习python以及深度学习的时候用到,但是经常我们面临的问题是远程服务器上的jupyter notebook,我们可能在本地 ...

  4. Python | 安装Jupyter Notebook及其目录的更改 jupyter问题

    20211223 在非输入出双击d删除单元格 20211218 https://www.jianshu.com/p/c51f9504d84f jupyter,ipynb转py 20211117 htt ...

  5. Jupyter Notebook 远程访问设置方法

    1. 设置密码 In [1]: from notebook.auth import passwd In [2]: passwd() Enter password: Verify password: O ...

  6. Ubuntu 安装 IPython、jupyter notebook

    1. 升级 pip sudo pip3 install --upgrade pip 2. 安装 IPython IPython 5.x 是最后一个支持 Python2 的 IPython . sudo ...

  7. Effective C++ 50条款

    Effective C++ 50条款 条款 1:尽量用 const 和 inline 而不用#define--尽量用编译器而不用预处理 #define max(a,b) ((a) > (b) ? ...

  8. Python的必学技术——Jupyter Notebook

    推荐 Jupyter NoteBook 的原因:整合所有的资源.交互性编程体验和零成本重现结果. Jupyter NoteBook 能够把软件代码.计算输出.解释文档.多媒体资源整合在一起的多功能科学 ...

  9. Anaconda中pytorch环境搭建(包括详细的虚拟环境创建,以及虚拟环境中jupyter notebook的使用)

    PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序. 2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch.它是一个 ...

  10. Windows下超详细安装Anaconda3以及jupyter notebook

    Anaconda是一个软件包管理器,一个环境管理器以及一个Python发行版,其中包含许多开源软件包的集合(numpy,scikit-learn,scipy,pandas等).如果在安装Anacond ...

最新文章

  1. pLSQL中文乱码问题
  2. STL容器汇总(一)
  3. 实验8.2 指针与字符串 6-2 删除字符
  4. AWS上的应用程序自动扩展–选项及其对性能的影响
  5. QScrollArea不能显示滚动条
  6. 无限极 php算法,无限极分类算法,对你一定有帮助
  7. java.net.MalformedURLException: unknown protocol: c 这个错一般有两种原因导致: 1、URL协议、格式或者路径错误,...
  8. [持续更新]先进OpenGL编程注意事项
  9. 专业的统计分析软件 IBM SPSS Statistics 26 Mac版(附带安装包网盘资源)
  10. PHP 二元线性拟合函数
  11. Swift 读写 plist 文件
  12. 一枚菜鸟前端工程师月度工作总结
  13. Windows上查看MTU值和修改MTU的方法
  14. 可移动文物快速三维建模
  15. 【自省篇】软件开发七宗罪
  16. 利用感知机实现鸢尾花分类问题
  17. 这是一份优秀的餐饮行业微信营销解决方案
  18. java查找算法:线性查找
  19. 自由传奇|为你的队伍加油!
  20. 如何让Markdown 表格整体居中?

热门文章

  1. 绝对引用计算机几级,计算机一级必考的14个Excel函数,让我来告诉你
  2. 句柄即GetSafeHwnd的作用
  3. 等比缩放公式_CVPR2019 | 旷视提出MetaSR:单一模型实现超分辨率任意缩放因子
  4. python中pickle模块无法导入_python pickle模块
  5. java jdk使用教程_java初学者实践教程2-jdk的使用
  6. Mysql: mysqlbinlog命令查看日志文件
  7. 移动app设计公司流程—APP设计需求分析规范
  8. 【15.03.13】手动快速在Linux桌面上添加一个程序图标快捷方式
  9. 解决 vim 中文编码问题
  10. Symfony 2.0 认识Request, Response, Session, Cookie