《深入理解c++对象内存模型》读书笔记


《c++对象内存模型》读书笔记


这本书大二第一次接触,刚开始由于功力不够不能很好的消化这本书的内功,多读几遍就会对自己的语言思想有很大的提升。这本书出版很久了,但一直没被淘汰。记录自己的学习笔记,温故知新。


C语言不是面向对象的计算机编程语言,它主要由基本数据类型,struct结构体,和函数,数据块和函数是没有关联的,函数就相当于服务指令,你想加工什么数据,就通过调用函数传人数据参数,从而获得该函数的服务。这样的话当工程很大的时候就就会定义很多的函数很多的结构体,这些结构体和函数根据去功能通过.h  .m文件进行划分,成百上千的函数结构体会让头文件的引用变得非常的复杂,从而降低开发效率,和程序设计的难度。


C++是面向对象编程的计算机高级语言,封装,继承,多态。数据块和处理数据块的功能函数就关联起来,以前用文件的形式来划分数据块和函数变成的用类的形式。提高开发效率,用面向对象的程序设计思想来设计程序使得更加的清晰。


对于计算机语言,与其说高级语言牛叉到不如说是编译器牛叉,从本质上来讲,计算机高级语言写出来的源代码都逃不过编译器的掌心,它们都会被编译成对应的CPU指令,对于动态语言无非就是加上一个runtime,既然语言都最后会变成CPU指令,那么计算机语言之间都可以一一对应的关系,那么C++语言编写的程序也无非就是函数的调用,参数的传递,但在语法特性上又存在各自的差异。这就说明了编译器对C++语言做了很多的事。


计算机语言是标准,对应的编译器是标准的实现,编译器越是智能越是强大,它为你做的东西就多,这就为什么java,c#,swift不需要头文件,因为开发环境编译器能动态的检测到你设计的变量和函数,swift甚至不需要main函数,swift是面向对象的语言,如果编译器检测到了函数调用,它就会用这个函数作为main函数作为程序的入口点。


对于不同的书,不同的读者有不同的看法,以下为个人学习记录,不足之处还望见谅。


问题:

1.问什么会有self变量?

2.成员函数和虚函数的区别?

3.为什么虚函数能实现动态调用和多态?


1.c和c++对比

c语言的数据块和功能函数分开
typedef struct point3d {
    float a;
    float b;
    float c;

}point3d;


void printPoint3d(const point3d *pd){
    printf("a= %g,b= %g,c = %g",pd->a,pd->b,pd->c);
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值