1、视C++为一个语言联邦
C、object-oriented C++、template C++、STL
2、尽可能使用const:
1)关键字const出现的星号左边,表示被指物事常量;如果出现在星号右边,表示指针自身是常量;如果出现在两边,表示被指物和指针都是常量。
2)stl迭代器中申明迭代器为const就像申明指针为const一样,表示这个迭代器不得指向不同的东西,但他所指向的东西的值是可以改动的。如果希望所指的东西不可被改动,你需要的是const  iterator。
3)const成员函数:两个成员函数如果只是常量性不同,可以被重载。如果一个函数的返回类型是个内置类型,那么改动函数返回值从来就不合法。
4)在const和non-const成员函数中避免重复:第一次这里将*this从其原始类型转为const类型。第二次则是从const operator    []的返回值中移除const。添加const的那次强迫进行了一次安全转型,使用static_cast。移除const的那个动作只可以藉由const_cast完成,没有其他选择。const成员函数调用non_const成员函数是一种错误行为,因为对象有可能因此被改动。
const char & operator[]()const
{}
char & operator[]
{
return
const_cast<char&>(static_cast<const textblock&>(*this)[position])
}
请记住:将某些东西申明为const对象可以帮助编译器查找出错误。const可被施加于任何作用于内对象、函数参数、函数返回类型、成员函数本体;当const和non_const成员函数有这实质等价的实现时,令non_const版本调用const版本可避免代码重复。
3、确定对象被使用前已先被初始化
1)为内置型对象进行手工初始化,因为C++不摆正初始化他们
2)构造函数最好使用成员初值列,而不要在构造函数本体内使用赋值操作。初值列列出的成员变量,其排列次序和他们在class中申明的次序相同
3)为免除“跨编译单元之初始化问题”,请以local static对象替换non-local static对象。
4、了解C++默默编写并调用那些函数
编译器可以暗自为class创建default构造函数、copy构造函数、copy assignment操作符、以及析构函数
5、若不想用编译器自动生成的函数,就该明确拒绝(接4)
为驳回编译器自动提供的机能,例如copy构造函数、copy assignment操作符等,可将相应的成员函数申明为private并且不予实现。使用像uncopyable这样的base class也是一种方法。
6、为多态基类填加virtual析构函数

polymorphic带多态性质的,base class 应该申明一个virtual析构函数 。如果class带有任何virtual的函数,他就应该拥有一个virtual析构函数;classes的设计目的如果不是为了base class 使用,或不是为了具备多态性,就不该声明virtual析构函数.

转载于:https://www.cnblogs.com/EOEHVT/p/5808101.html

Effective c++读书笔记相关推荐

  1. Effective C++读书笔记 摘自 pandawuwyj的专栏

    Effective C++读书笔记(0)       Start   声明式(Declaration):告诉编译器某个东西的名称和类型,但略去细节.   std::size_t numDigits(i ...

  2. Effective Java读书笔记(二)

    Effective Java 读书笔记 (二) 创建和销毁对象 遇到多个构造器参数时要考虑使用构建器 创建和销毁对象 何时以及如何创建对象? 何时以及如何避免创建对象? 如何确保它们能够适时地销毁? ...

  3. Effective STL 读书笔记

    Effective STL 读书笔记 标签(空格分隔): 未分类 慎重选择容器类型 标准STL序列容器: vector.string.deque和list(双向列表). 标准STL管理容器: set. ...

  4. more effective c++和effective c++读书笔记

    转载自http://bellgrade.blog.163.com/blog/static/83155959200863113228254/,方便日后自己查阅, More Effective C++读书 ...

  5. Effective Java 读书笔记(七):通用程序设计

    Effective Java 读书笔记七通用程序设计 将局部变量的作用域最小化 for-each 循环优于传统的 for 循环 了解和使用类库 如果需要精确的答案请避免使用 float 和 doubl ...

  6. Effective Java读书笔记完结啦

    Effective Java是一本经典的书, 很实用的Java进阶读物, 提供了各个方面的best practices. 最近终于做完了Effective Java的读书笔记, 发布出来与大家共享. ...

  7. Effective Java 读书笔记(一)

    前言: 开个新的坑位,<effective java>的读书笔记,之后有时间会陆陆续续的更新,读这本书真的感触满多,item01和item02就已经在公司的项目代码中看到过了.今天这篇主要 ...

  8. Effective C++ 读书笔记 Item1-Item4

    目录 守则01:把C++看做一个语言的集合,而不是单一的语言 守则02:尽量使用const, enum, inline, 减少宏变量#define的使用 守则03: 尽可能使用const关键字 守则0 ...

  9. Effective C++读书笔记(一)

    百度博客本来就垃圾,我以前发表的文章也全是废品.就在csdn这里放上我的读书笔记,自娱自乐下. 1 让自己习惯C++ 条款01:视C++为一个语言联邦 C语言同时支持过程形式(procedural). ...

  10. 【effective c++读书笔记】【第7章】模板和泛型编程(3)

    条款46:需要类型转换时请为模板定义非成员函数 对条款24的例子进行模板化: #include<iostream> using namespace std;template<type ...

最新文章

  1. Linux ls信息给qt gui,如何使用Qt 4把ls命令的结果显示到GUI界面上去?
  2. ubuntu 强制关机后 mysql无法启动
  3. 试用去水印_教你一键视频去水印,支持抖音、快手、小红书、哔哩哔哩等几十个平台...
  4. 常见花材的固定的方法有哪些_旋流器常见的故障及处理方法有哪些?
  5. springboot+事务,多张表的操作事务回滚
  6. 博弈论(一):Nim游戏
  7. 使用Configuration Manager部署及管理软件更新(1)
  8. [转载] 深入理解log机制
  9. GAMES101-现代计算机图形学入门-闫令琪 - lecture6 光栅化2(抗锯齿) - 课后笔记
  10. 一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。
  11. 开源框架Banner实现图片轮播
  12. 基于matlab的动态心形图案
  13. html怎么设置一个banner图像,css如何设置banner图自适应
  14. k8s——kubeadm工具使用
  15. SpringBoot实现文件上传和下载
  16. js实现不同城市空气质量报告显示柱形图
  17. [Ynoi2019]魔法少女网站
  18. python 数据类型:整型 字符串 布尔值 列表 元组 字典 集合
  19. ChatGPT的1000+篇文章总结
  20. 学习STM32单片机之结构体思想

热门文章

  1. python中argmin函数_Python numpy.argmin()用法及代码示例
  2. 如何做一个国产数据库(三)
  3. c++ 使用正则匹配url
  4. 产品经理之深度学习促进产品(二)
  5. Oracle的SQL基础之用户与表空间
  6. mysql群集配置_MySQL主主集群配置
  7. 【kafka】Replication factor: 1 larger than available brokers:0
  8. 【Elasticsearch】十九种Elasticsearch字符串搜索方式终极介绍 各种 查询
  9. 使用XStream注解处理复杂xml的属性及数据集合(xml转对象)
  10. GC调优在Spark应用中的实践