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中断的系统调用
    线程的概念
    C++ 虚函数表浅析
    C++虚函数工作原理
    深入浅出单实例Singleton设计模式
    《角斗士》一个帝国的史诗绝唱
    《妖猫传》大唐盛世背后那些事
    程序员之路
    职业规划
    一些重要的算法
  • 原文地址:https://www.cnblogs.com/alanma/p/9678348.html
Copyright © 2011-2022 走看看