Effective C++ 25:考虑实现一个不抛异常的 swap

Effective-C++ C++ STL 异常 模板 特化 作用域 函数重载

提供一个更加高效的,不抛异常的公有成员函数(比如 `Widget::swap`)。在你类(或类模板)的同一命名空间下提供非成员函数 `swap`,调用你的成员函数。如果你写的是类而不是类模板,请偏特化 `std::swap`,同样应当调用你的成员函数。调用时,请首先用 `using` 使 `std::swap` 可见,然后直接调用 `swap`。

JavaScript显式类型转换与隐式类型转换

JavaScript 接口 弱类型 构造函数 类型转换

在 JavaScript 中声明变量不需指定类型,对变量赋值也没有类型检查,同时还允许隐式类型转换。 这些特征说明 JavaScript 属于弱类型的语言。

在强类型的 C++ 中,多数情况下构造函数需要声明为 explicit 来禁止隐式类型转换, 避免误用(见Item 15:资源管理类需要提供对原始资源的访问)。 弱类型的 JavaScript 中没有这一机制,比如下面的代码:

// 弹出对话框中输入1
var a = prompt('input a number');

var b = a + 1;

console.log(b);   // 控制台输出 11   

目前 JavaScript 还无法阻止 a 被隐式转换为字符串。 本文便来总结一下 JavaScript 的类型转换行为,以及隐式类型转换的规则。

上一页 下一页