zoukankan      html  css  js  c++  java
  • More Effective C++ 条款0,1

    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达成,你就应该选择引用。任何其他时候,请采用指针。

  • 相关阅读:
    linux tcpdump抓包,wireshark实时解析
    TLS协议分析
    sqlite sql语句关键字GROUP BY的理解
    使用 openssl 生成证书
    linux C单元测试工具CUnit的编译安装及使用
    http短连接大量time wait解决方案
    gdb调试行号错位
    libevent 多线程
    C语言单元测试
    客户端端口分配
  • 原文地址:https://www.cnblogs.com/alanma/p/9678348.html
Copyright © 2011-2022 走看看