Efective C++(2nd)学习心得

  大三都结束了,以前一直是在网上搜别人写的blog来学习学习东西,自己从来没有写过,今天起就开始过把瘾,写写blog...

  这几天在看Effective C++(2nd),看得还差不多了,有一种欣喜也有一种震惊吧,原来自己以前学的C++那么肤浅啊...废话不多讲,学习体会如下:

  1.C++类中重载操作符的了解:

    1.1重载为成员函数还是友元函数,有讲究;

    1.2为什么流提取操作符和流插入操作符要声明为类的友元函数;

    1.3重载前置++和后置++的方法;

    1.4重载函数返回值和返回引用的区别;

    1.5单目运算符和双目运算符的重载;

  2.C++ class的基本构建

    2.1构造函数:默认构造函数,带缺省参数的构造函数,拷贝构造函数,转换构造函数;

    2.2赋值操作符的重载;

    2.3const限定符的用法;

    2.4static限定符的用法;2.5参数化列表的初始化方法,以及该方法和普通赋值之间的区别;

  3.C++成员函数的认识

    3.1纯虚函数:给出接口,留给基类实现,必须实现;虚函数:给出接口和默认实现,留给基类重新实现;一般的成员函数:表示某种意义上的特殊不变性,在继承的过程中不会被改写;

  4.C++的编译和链接

    编译是以cpp文件为单位,进行基本的语法检查,并生成对应的二进制obj文件;链接是将obj文件组合起来,会对其中的函数调用进行检查,经过本步骤就可以生成exe文件了; 其实平时我们运行exe文件,是将exe文件载入内存而已;

  5.#include "A.h"和class  A的区别

    在需要class  A的具体信息或者说要定义一个A对象时,使用前者;如果说仅仅是需要 A的对象或者引用且不需要A的任何信息时,用类的前式声明就比较好,减少了编译的负担和文件编译之间的依赖性;

  6.C++中inline的用法内部原理

    inline具有宏的优点消除了函数调用开销,但是会增加代码的体积;inline仅仅是对编译器的一种提示,编译器不一定会采纳;

  7.C++类的实现和接口分离的技术

    便于实现封装,只留出接口,隐藏实现,减少重复编译,降低文件包含的依赖性....

    主要实现途径:

    7.1句柄类的实现方法        

    7.2协议类的实现方法

  8.对继承的理解:

    公有继承是“有一个”的内涵,即“is-a”,私有继承是“用什么实现的内涵”,除此之外类的分层也蛮有意思即是“has a”的内涵,模板编程其实是一种“用什么实现”的内涵;

  9.继承和使用模板的区别和联系:

    两者从不同的角度来实现了C++的代码重用:

    当对象的类型对于实现的算法没有影响的时候,采用模板的思想;

    当对象的类型对于是想的算法有影响的时候,采用继承结合虚函数的方法;

  10.注意尽量避免类继承参差的层次的向下转换

 

  第一次写技术blog,就这些吧,贵在坚持....

原文地址:https://www.cnblogs.com/BlueGeek/p/2638732.html