Effective C++ 51:写 new 和 delete 时请遵循惯例

Effective-C++ C++ 异常 指针 数组 动态内存 析构函数

new需要无限循环地获取资源,如果没能获取则调用"new handler",不存在"new handler"时应该抛出异常; new应该处理size为零的情况; delete应该兼容空指针; new/delete作为成员函数应该处理size > sizeof(Base)的情况(因为继承的存在)。

如何检查 JavaScript 变量类型?

JavaScript 构造函数 继承 原型链 类型检查 类型转换 iframe

JavaScript 基本数据类型有 6 种:字符串、数字、布尔、null、undefined、Symbol。 用户定义的类型(object)并没有类的声明,因此继承关系只能通过构造函数和原型链来检查。 本文要解决的问题,如何检查一个变量的类型?先给结论:

如果你要判断的是基本数据类型或JavaScript内置对象,使用toString; 如果要判断的时自定义类型,请使用instanceof

不同的编程语言都有自己的方式来提供类型信息,例如 C# 的反射、C++的Traits, JavaScript 提供类型信息的方式更加灵活(杂),因而也容易误用。 下面来分析常见类型检查手段的区别:typeof, instanceof, constructor, toString。

如果你在寻找类型转换的解决方案,而非类型检查,请移步JavaScript类型转换

Effective C++ 48:了解模板元编程

Effective-C++ C++ 模板 traits 编译 模板元编程

模板元编程(Template Metaprogramming,TMP)就是利用模板来编写那些在编译时运行的C++程序。模板元程序(Template Metaprogram)是由C++写成的,运行在编译器中的程序。当程序运行结束后,它的输出仍然会正常地编译。

上一页 下一页