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

本文分享了作者在阅读《Effective C++(2nd)》过程中的学习心得,涉及C++类中操作符重载、类的基本构建、成员函数认识、编译和链接过程、类的实现和接口分离技术、继承理解、模板编程与继承的区别、避免类继承层次的向下转换等核心内容。通过具体实例和深入剖析,展示了作者对C++语言的深刻理解和实践感悟。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  大三都结束了,以前一直是在网上搜别人写的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/archive/2012/08/14/2638732.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值