自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(4)
  • 收藏
  • 关注

原创 More Effective C++ 27:要求或禁止在堆中产生对象

堆中建立对象 为了执行这种限制,你必须找到一种方法禁止以调用new以外的其它手段建立对象。这很容易做到。非堆对象在定义它的地方被自动构造,在生存时间结束时自动被释放,所以只要禁止使用隐式的构造函数和析构函数,就可以实现这种限制。 把这些调用变得不合法的一种最直接的方法是把构造函数和析构函数声明为 private 这样做副作用太大。没有理由让这两个函数都是 private。最好让析构函数成为 private,让构造函数成为 public。 例如,如果我们想仅仅在堆中建立代表无限精确度数字的对象,可以这样做:

2020-07-16 22:14:13 357

原创 More Effective C++ 26:限制某个类所能产生的对象数量

例如你在系统中只有一台打印机,所以你想用某种方式把打印机对象数目限定为一个。或者你仅仅取得 16 个可分发出去的文件描述符,所以应该确保文件描述符对象存在的数目不能超过 16 个。你如何能够做到这些呢?如何去限制对象的数量呢? 每次实例化一个对象时,我们很确切地知道一件事情:“将调用一个构造函数。”事实确实这样,阻止建立某个类的对象,最容易的方法就是把该类的构造函数声明在类的 private域或者声明为delete: class CantBeInstantiated { private: CantB

2020-07-15 18:33:17 401

原创 More Effective C++ 25:将构造函数和非成员函数虚拟化

假设你编写一个程序,用来进行新闻报道的工作,每一条新闻报道都由文字 或图片组成。你可以这样管理它们: class NLComponent //用于 newsletter components的抽象基类 { public: ... //包含至少一个纯虚函数 }; class TextBlock: public NLComponent { public: ... // 不包含纯虚函数 }; class Graphic: public NLComponent { public:

2020-07-15 15:59:34 245

原创 More Effective C++ 24:理解虚拟函数、多继承、虚基类和 RTTI 所需的代价

当调用一个虚拟函数时,被执行的代码必须与调用函数的对象的动态类型相一致 编译器如何能够高效地提供这种行为呢?大多数编译器是使用 virtual table 和 virtual table pointers。virtual table 和 virtual table pointers 通常被分别地称为 vtbl 和 vptr。 一个 vtbl 通常是一个函数指针数组。在程序中的每个类只要声明了虚函数或继承了虚函数,它就有自己的 vtbl,并且类中 vtbl的项目是指向虚函数实现体的指针。例如,如下这个类定义:

2020-07-15 15:18:35 258

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除