我们现在拥有许多新功能的C++ 11.一个有趣且令人困惑的(至少对我来说)是新的nullptr.
嗯,不再需要令人讨厌的宏了NULL.
int* x = nullptr;
myclass* obj = nullptr;
Run Code Online (Sandbox Code Playgroud)
尽管如此,我还没有得到如何nullptr运作.例如,维基百科的文章说:
C++ 11通过引入一个new 关键字作为一个区分空指针常量来解决这个问题:nullptr.它的类型为nullptr_t,它是可隐式转换的,可与任何指针类型或指向成员类型的类型相媲美.除了bool之外,它不可隐式转换或与整数类型相比.
它是一个关键字和一个类型的实例?
另外,你有另一个例子(在维基百科旁边)哪里nullptr优于好老0?
我一直在努力理解JavaScript的比较运算符之间的区别:身份和平等.根据我的阅读,如果使用==检查两个对象的相等性,JavaScript将尝试确定它们是否是相同类型,如果不是,则尝试将它们设置为相同类型.但是,===的行为方式不同.举个例子:
var n = "1";
console.log(n==1); // outputs true
console.log(n===1); // outputs false
Run Code Online (Sandbox Code Playgroud)
那么这些"身份"运营商和正规平等运营商之间的区别是什么?两者兼有的好处是什么?
性能有差异吗?我认为身份运算符会更快,因为它不会进行转换.
另外,当涉及更复杂的对象(如数组)时,它们有何不同?最重要的是,公约会说什么时候应该使用另一个,为什么?