• 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,就这些吧,贵在坚持....

  • 相关阅读:
    ASP.NET 配置log4net启用写错误日志功能
    jQuery formValidator表单验证插件
    jQuery Easy Validate Plugin
    https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题
    Request 分别获取具有相同 name 属性表单元素值
    asp.net开源CMS推荐
    客户对账单本月欠款
    AR 客户本月回款
    应收帐款汇总
    采购订单关闭之PL/SQL实现方法
  • 原文地址:https://www.cnblogs.com/BlueGeek/p/2638732.html
Copyright © 2020-2023  润新知