1.不要对数组使用多态

数组空间连续,靠偏移访问,多态转换后因为其类型变化,类型所占空间变化。此时偏移访问的方式便不能正确去得数组各元素准确其实位置。

2.避免无用的缺省构造函数(主针对模板)

通过仔细设计模板可以杜绝对缺省构造函数的需求。例如标准的vector模板(生成一个类似于可扩展数组的类)对它的类型参数没有必须有缺省构造函数的要求。很多模板类没有以仔细的态度去设计,没有缺省构造函数的类就不能与许多模板兼容。

无用缺省构造函数会在没有足够的数据时初始化一个对象,而此时该对象中许多属性处于无效状态。倘若我们不判断这些无效状态,则代码很有可能运行不正常;倘若判断无效状态,则会影响运行的效率,这种对象的使用者也要为此付出更多时间和代码。
    而使用没有缺省构造函数的类的确有一些限制,但它给你提供了一种保证:这个类被正确地建立和高效地实现。

避免方法是直接分配空间,而后在该空间以如下方式调用拷贝构造函数和析构函数。这样子只提出了要求模板参数类有拷贝构造即可
    ::new(__p) _Tp(__val)
    __p->~_Tp()

3.智能指针

template<class T>                    // 模板类,指向T的
class SmartPtr {                     // 灵巧指针
public:
  SmartPtr(T* realPtr = 0);
  T* operator->() const;
  T& operator*() const;
  template<class newType>             // 模板成员函数
  operator SmartPtr<newType>()        // 为了实现隐式类型转换. 执行类似:
  {
    return SmartPtr<newType>(pointee);
  }
  ...
};

实现模板类的不同类型实例间的隐式转换。需要用到成员函数模板,即成员函数拥有一个未知类型模板参数。
SmartPtr<childclass> c;
SmartPtr<parentclass> p = c;

more effective C++相关推荐

  1. Effective C++ 50条款

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

  2. [.NET] 《Effective C#》快速笔记 - C# 中的动态编程

    <Effective C#>快速笔记 - C# 中的动态编程 静态类型和动态类型各有所长,静态类型能够让编译器帮你找出更多的错误,因为编译器能够在编译时进行大部分的检查工作.C# 是一种静 ...

  3. Effective STL 50条有效使用STL的经验笔记

    Scott Meyers大师Effective三部曲:Effective C++.More Effective C++.Effective STL,这三本书出版已很多年,后来又出版了Effective ...

  4. 《Effective C++》第8章 定制new和delete-读书笔记

    章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...

  5. VirtualBox: Effective UID is not root

    为什么80%的码农都做不了架构师?>>>    桌面上运行virtualbox出错: The virtual machine 'xp' has terminated unexpect ...

  6. Effective Java:对于全部对象都通用的方法

    前言: 读这本书第1条规则的时候就感觉到这是一本非常好的书.可以把我们的Java功底提升一个档次,我还是比較推荐的.这里我主要就关于覆盖equals.hashCode和toString方法来做一个笔记 ...

  7. 第 3 次读 Effective Java,这 58 个技巧最值!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:Dong GuoChao <Effective ...

  8. Effective C++ 类与函数设计和申明

    Effective C++ 类与函数的设计和申明 在看<Effective C++>这本书的过程中,我无数次的发出感叹,这他妈写得太好了,句句一针见血,直接说到点上.所以决定把这本书的内容 ...

  9. 量化网络训练--Towards Effective Low-bitwidth Convolutional Neural Networks

    Towards Effective Low-bitwidth Convolutional Neural Networks CVPR2018 https://github.com/nowgood/Qua ...

  10. 卫星图像分割--Effective Use of Dilated Convolutions for Segmenting Small Object Instances

    Effective Use of Dilated Convolutions for Segmenting Small Object Instances in Remote Sensing Imager ...

最新文章

  1. rabbitmq_management简介
  2. python文本解析_Python之文本文件解析
  3. jquery中点击切换的实现
  4. 第二届构建之法论坛预告(草案)
  5. 如何利用全站加速,提升网站性能和用户体验?
  6. 算法学习入门书籍 -- 2022.02.13
  7. 杭州c语言,杭州c语言的学习内容
  8. NickLee UI中间件 for asp.net 2.0版本
  9. 电脑怎么连蓝牙耳机_三星蓝牙耳机怎么样 三星蓝牙耳机使用说明
  10. java jlabel位置_Java Swing – JLabel位置
  11. Android Studio使用IconFont阿里矢量图标库
  12. Android 界面设计 简约个人求职简历表格
  13. 计算机应用技术企业信息化,计算机应用技术对企业信息化作用
  14. OceanBase 之 OBCA考试总结
  15. Win10 重装系统 (iso方式)(超详细)
  16. “移动互联网+”第一股 正益移动登陆新三板
  17. html5 pc端 客户端 web端的区别,wap版、手机版以及web的区别
  18. .NET Core 2.0生成图片验证码
  19. Oracle:经典例题解析
  20. android自动照相机2.0,Camera2.0下载

热门文章

  1. java调用存储过程 sql server_Java中调用SQL Server存储过程示例
  2. python如何绘制曲线图_只会柱状图、饼状图、折线图怎么行,来用Python画个热力图...
  3. esxi直通 gen8_HP MicroServer Gen8与ESXI采坑之旅
  4. android新闻管理,Android资讯新闻类App(头条、网易等),频道管理集成之数据库存储...
  5. java垃圾回收菜鸟_java垃圾回收机制
  6. android webview 截图,Android获取webView快照与屏幕截屏的方法 -电脑资料
  7. Java RMI(2):项目中使用RMI
  8. oracle 11g 忘记了sys,system,scott密码
  9. linux中使用xshell远程连接
  10. python中文分词jieba总结