effective C++ 学习 0_导读

  1. 本书目的,摘录如下:
    本书的最佳用途就是彻底了解C++如何行为,为什么那么行为,以及如何运用其行为形成优势。
  2. 术语 声明式:
    对象声明式和函数声明式:
    extern int x; //对象(object)声明式
    std:size_t numDigits(int number); // 函数声明式

    自定义类型,C++ with class部分:
    class Widget; //类(class)声明式

    模板类型,C++ with template部分:
    template
    class GraphNode;
    //模板(template)声明式

  3. 术语 定义式, 是上面对应的定义:
    对对象来说,定义式是编译器为此对象拨发内存的地点。 这个我的理解是:对象的定义式定义了对象创建时所需要多大内存,比如int型一般是4个字节,double型一般是8个字节。 只要定义了对象,程序肯定会申请内存。
    对函数(function)或函数模板(function template)而言,定义式提供了代码本体。 这个我的理解: 也就是说定义了该函数被调用时,一步一步都会去干啥。
    对class或class template而言,定义式列出它们的成员。 个人理解: 类的构造和析构函数:定义了该类如何创建对象和释放对象。 对象是存在于内存中的,占用了一定的内存空间。 普通函数:定义了该类的对象支持哪些功能,是如何实现这些功能的。

    1. 具体搜下为什么C/C++要区分声明式和定义式 (Java只有定义式的):C++声明和定义的区别
      从此文章可以看出,变量的定义只能1次,如果放在.h文件中,被其他文件include的话,就会发生重复定义了。 而声明则可以重复,所以.h文件中一般放变量的声明。
      引用上面那篇博客的话:
      以下3种定义可以放入头文件中:
      a. 类的定义。
      b. const变量的定义。因为const常量的作用域仅限于定义它的文件,所以可以在多个源文件中出现它的定义。
      c. inline函数。
  4. 强调了构造函数声明时 explicit关键字。 不加的话,会有隐式转换, 不过有的时候确实想要隐式转换。 一般情况需要加explicit,这样必须使用声明的构造函数来转换类型。
  5. 如果调用到了copy构造函数,说明此时是passed by value 以值传递。 而在C++ with class部分,强调pass-by-reference-to-const, 这样不会调用copy构造函数,可以提高效率。
  6. 强调了不明确行为,C++程序要要尽可能避开不明确行为。
  7. 强调了C++说指的interface 接口是一般性的设计观念。 而在java或者.NET语言本身是提供Interface作为语言元素的。 C++ 可以用纯虚类来近似模拟java中的Interface。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值