C++程序设计 读书笔记(一) 概览

概览

 

        一个模块中实现的假类型转变成一个真正的类型的过程中,有一个性质被丢掉了:表示方式没有与用户界面分离,反而变成了使用某类型程序片段里将要包含的一个部分。这个表示完全是私用的,因此只能通过成员函数访问,然而它却出现在那里。如果这个表示有了某种显著的变化,那些使用它的代码就必须重新编译,这是为做出在行为上完全像内部类型的具体类型时所付出的一个代价。特别因为在不指定一个类型的大小的情况下,我们就无法获得这个类型的真正的局部变量。

        在类型不常改变,而且局部变量又确实提供了我们急需要的清晰性和效率的那些地方,这种方式是完全可以接受的,也是很理想的。但是,如果我们需要将“某具体类型”的用户与“某具体类型”的表示的修改完全隔离开,使用具体类型的方法就不适用,针对这个问题的解决方案能得到界面和表示的完全分离,这时需要放弃的就是真正的局部变量。


虚函数

        让编译器把一个virtual函数的名字转换为指向这些函数的指针表的一个下标.这种表通常被称为"虚函数表",或简称vtbl.每个带有虚函数的类都有标示着它的所有虚函数的vtbl.
即使调用者并不知道对象的大小以及他的数据布局,位于vtbl中的函数也使对象能正确的使用.这种虚函数调用机制的效率可以做得基本上与正常函数调用机制相同,其空间开销是带有虚函数的类的每个对象里包含一个指针,而这样的类需要有一个vtbl.



面向对象的程序设计

        在一个系统中找出共性并不是一件不值得一提的事情.能够利用的共性的量也受到系统设计方式的影响.在设计系统的时候----甚至是在写有关系统的需求时-----就应该主动地去考虑共性的问题.可以特别地将类设计为构造其他类型的基本构建.现存的类也应该检查,看看它们是否表现出某些共性,能够通过一个基类加以利用.

范型为:
确定你需要哪些类;
为每个类提供完整的一组操作;
利用继承去明确的表示共性.



通用型程序设计

        如果一个算法能够以独立于其表达细节的方式表达,而如果这样做又是能够负担得起的,不会出现逻辑毛病的话,那么就应该这样去做.
        模板是一种编译时的机制.因此,与手工编写的代码相比,它们的使用并不引起任何额外的运行时开销.

范型为:
确定你需要哪些算法;
将它们参数化,使它们能够对各种各样适当的类型和数据结构工作.







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值