More Effective C++之5

原创 2006年05月31日 09:58:00
条款5:对定制的[型别转换函数]保持警觉
class Sample
{
public:
       Sample(int i){m_i = i;}
       operator int(){return 10;}
protected:
private:
       int m_i;
};
 
int main(int argc, char* argv[])
{
       Sample test(5);
       if (10 == test)
       {
              printf("Wonderful!/n");
       }

       printf("Hello World!/n");

       return 0;
}

       我写的一段Example,很令人惊异的是10居然等于Sample的对象,不可思议。事实上是static_cast<int>(test),that means test.int(),然后返回10。这真是恐怖。所以遇到这样的问题,不要写operator int(),而应该写int asInt()。先前有经验的程序员在构造STL的时候就是这么做的。那么在构造函数之前还希望能够加上explicit,这也能避免一些错误,这些错误在这里就不再赘述了。

More Effective C++----(4)避免无用的缺省构造函数 & (5)谨慎定义类型转换函数

Item M4:避免无用的缺省构造函数 缺省构造函数(指没有参数的构造函数)在C++语言中是一种让你无中生有的方法。构造函数能初始化对象,而缺省构造函数则可以不利用任何在建立对象时的外部数据就能初始化...

More Effective C++之Item M5:谨慎定义类型转换函数

C++编译器能够在两种数据类型之间进行隐式转换(implicit conversions),它继承了C语言的转换方法,例如允许把char隐式转换为int和从short隐式转换为double。因此当你把...

【more effective c++读书笔记】【第5章】技术(5)——Reference counting(引用计数)(1)

一、非引用计数实现的String类 #ifndef STRING_H #define STRING_H #define _CRT_SECURE_NO_WARNINGS #include class ...

【more effective c++读书笔记】【第5章】技术(5)——Reference counting(引用计数)(2)

三、引用计数基类和智能指针实现的String类 //RCObject.h #ifndef RCOBJECT_H #define RCOBJECT //引用计数基类 class RCObject{ pu...

More Effective C++学习笔记(5)-技巧

主题 概要 C++ More Effective C++ 技巧 编辑 时间 新建 20170121 序号 参考资料 1 More ef...

《More Effective C++》重点摘要二:操作符

对定制的“类型转换函数”警觉。两种函数允许编译器执行类型转换:1)单变量constructors;2)隐式类型转换操作符。第一种函数可以是明确只有一个单变量的constructor,也可以是拥有除第一...

more effective c++之Item M1:指针与引用的区别

1.参数为引用不用判断为空,指针需要判断空指针; 2.有些函数返回应用比返回指针从语法和形式上更好,例如重载operator [ ]。 指针与引用看上去完全不同(指针用操作符“*”和“->...

More Effective C++读书笔记(五)

技术 条款25:将构造函数和非成员函数虚拟化 1.虚拟构造函数是指能够根据输入给它的数据的不同而建立不同类型的对象,比如从磁盘读取对象信息。 2.被派生类重定义的虚拟函数不用必须与基类的虚拟函数...
  • necrazy
  • necrazy
  • 2013年11月08日 10:11
  • 814

《More Effective C++》7:千万不要重载 &&, ||, 和 ,操作符

《More Effective C++》Rule7:千万不要重载 &&, ||, 和 ,操作符

看了下More Effective C++,做了点小结

今天主要是学习More Effective C++ 1) 指针和引用的使用 指针:在对象为空时;不同的时刻指向不同的对象时 引用:总指向一个对象,并且一旦指向这个对象就不再改变时; 当时重载某个...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:More Effective C++之5
举报原因:
原因补充:

(最多只允许输入30个字)