C++编程思想(第1卷)的笔记(11)

>我来写笔记

按有用程度 按页码先后 最新笔记

  • onesuper
    第364页

    onesuper (被棱角磨破了生活)

    /代码内容已省略/ 有了多态,player 可以不必考虑 i 是哪个 instrument,直接调用 i.play() ,i 就会发出它应该发出的声音。但问题时怎么找到 play 的代码段呢? 如果基类方法不是 virtual, 运行时代码已经确定了,运行到 i.play(),就会自动跳到基类 play 代码段入口。(early binding) 但如果发现基类方法是 virtual,程序还不知道接下去到哪执行?这时会触发编译器进行 late bin... (更多)

    2012-02-08 22:57:20   回应

  • onesuper
    第392页

    onesuper (被棱角磨破了生活)

    代码复用技术比较 1.c方法: 拷贝原来的代码,然后进行修改 = = 2.smalltalk方法: 继承类型树上和要实现的那个类最近的那个类,而不能随意创建 3.c++方法 模板,由编译完成参数代换 (更多)

    2012-02-08 20:57:24   回应

  • onesuper
    第310页

    onesuper (被棱角磨破了生活)

    为什么不能 delete void* ? delete需要知道指针的类型,在释放内存之前,调用改类型的析构函数(这也是c++引进delete的根本原因) 该析构函数中可能又有对其它资源的 delete 操作,如果不调用就会泄露内存。 而在 C 中,所有结构体的 initialize 和 destroy 都需要程序员自己调用,增加了出错的可能性。 (更多)

    2012-02-05 16:49:07   回应

  • onesuper
    第247页

    onesuper (被棱角磨破了生活)

    C语言按值传递 /代码内容已省略/ push b ; (全局变量或者局部变量不重要)a和b的value 入栈 push a call f() ; 进入f的代码段范围,此时f操作的是栈上的value,返回值搞在寄存器中 add sp, 4 ; 弹栈栈上的value作废 mov g, register ; 返回值保存在g里 C之所以可以按值传递是因为所有value的大小都是编译器知道的(int,char……) (更多)

    2012-01-27 21:25:30   回应

  • onesuper
    第245页

    onesuper (被棱角磨破了生活)

    引用是一种“特殊”的指针,编译器强迫引用在被创建的时候,必须初始化,和某个存储单元进行关联。 指针可以是空指针、可以指来指去,而引用不能是空引用,不能一会引用这个单元,一会儿引用另一个单元。 它相当于一个alias,alias为空是没有任何意义的。 引用最大的好处是,作为函数参数/返回值时,比指针更清晰(省得解引用了)。 /代码内容已省略/ (更多)

    2012-01-27 21:01:28   回应

  • onesuper
    第147页

    onesuper (被棱角磨破了生活)

    c++程序员在初始化时比c程序员要少考虑很多东西。 在c程序中,操作对象是一个指针,而它指向的结构体在内存中还没有分配空间,需要手动p->initialize()一下。而在离开作用域时,还要手动p->clearup()一下,否则那块已经分配出去的内存因为指针变量出栈,再也找不回来了。 而在c++程序中,当我们定义的同时就自动触发了类的构造函数完成初始化,在离开类变量作用域时,编译器又自动帮我们调用类的析构函数完成清除工作.. (更多)

    2012-01-12 21:25:48   回应

  • onesuper
    第144页

    onesuper (被棱角磨破了生活)

    这里作者介绍了一种减少重复编译的技术:句柄类。 不适用句柄类: 接口代码 /代码内容已省略/ 实现代码 /代码内容已省略/ 客户端代码 /代码内容已省略/ 因为在公共接口中定义了B,导致每一次对B进行修改以后,客户端代码都要进行重新编译(B的定义改变后,客户端中A重新定义以后的对象大小必然也改变,因.. (更多)

    2012-01-12 20:38:09   回应

  • onesuper
    第142页

    onesuper (被棱角磨破了生活)

    c++ class的访问保护检查是在编译阶段完成的,访问控制信息(哪些成员是private,哪些是public)不会传递给连接器,程序在运行期间也不会做检查。 (更多)

    2012-01-12 20:27:29   回应

  • onesuper
    第114页

    onesuper (被棱角磨破了生活)

    C的缺陷:include头文件来声明函数,名字冲突……而且每次调用的时候都要传一个结构体指针 作者又接着调侃C的弱类型:在C中,我们常常发现能使程序通过编译,然后我们必须再花力气使它工作。 (更多)

    2011-12-16 15:08:10   回应

  • 不用闹铃的猫
    第1章 对象导言(1)

    不用闹铃的猫 (你是猴子派来的救兵吗?)

    virtual函数可以用来表示出在相同家族中的类具有不同的行为。 调用的是shape的erase()和draw()的版本,而不是特殊的Circle,Square或者Line版本。 1.7 创建和销毁对象 OOP的论域就是抽象数据类型、继承和多态性。 对象的存储可以放在栈中或者静态存储区域中。在栈中的变量称为自动变量或者局部变量。第二种方法是在堆中动态创造对象。用这种方法,可以知道运行时还不知道需要多少个对象,他们的生命期是多长,他们... (更多)

    2011-09-08 20:30:20   回应

<前页 1 2 后页>

笔记是你写在书页留白边上的内容;是你阅读中的批注、摘抄及随感。

笔记必须是自己所写,不欢迎转载。摘抄原文的部分应该进行特殊标明。

C++编程思想(第1卷)

>C++编程思想(第1卷)