码迷,mamicode.com
首页 > 编程语言 > 详细

More Effective C++ 条款0,1

时间:2018-09-20 00:57:48      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:技术   实现   int   条款01   运算符重载   枚举类   false   关于   cto   

More Effective C++ 条款0,1

条款0

关于编译器

不同的编译器支持C++的特性能力不同。有些编译器不支持bool类型,此时可用 enum bool{false, true};枚举类型来模拟bool类型。这允许参数类型为intbool的函数重载,但是这样做的缺陷是,对于内置的比较运算符,其仍返回int类型。
f(int);f(bool); f(a < b); // 会调用f(int),但其实用户期望调用f(bool)
但是一旦改用支持bool类型的编译器,情况可能会发生改变。另外一种方法是typedef:

typedef int bool; const bool false = 0; const bool true = 1;

技术分享图片
关于typedef的详细内容->typedef|
---

条款1

指针和引用的区别

  • 首先引用必须指向一个对象,并且必须赋初值,但是指针可以为空。
  • 引用只能指向它最初指向的对象,不能更改。指针可以更改。
  • 引用不需要担心为空的情况,但是指针必须进行空指针的检查
  • 运算符重载函数,例如operator[],返回的一般是引用
    vector<int> v(5); v[1] = 1; 考虑如果返回是指针,则应该写成*(v[1])= 1;

结论
当你知道你需要指向某个东西,且绝不会改变,指向其他东西,或是当你实现一个操作符而其语法需求无法由pointers达成,你就应该选择引用。任何其他时候,请采用指针。

More Effective C++ 条款0,1

标签:技术   实现   int   条款01   运算符重载   枚举类   false   关于   cto   

原文地址:https://www.cnblogs.com/alanma/p/9678348.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!