《深入浅出MFC》 第二章

 

以前看过C++的初级书,也上过一些课,总觉得学的只是皮毛,进入不到实质性的东西。这学期选了一门三维GIS的课,其中跟着老师做了一些三维的东西,虽然是简单的一个小的课程设计,但是感觉自己受益匪浅,起码对MFC有了进一步的认识,现在开始看《深入浅出MFC》也觉得看的下去了。

第一章的东西看的半懂半蒙的,从第二章下去反而好看了点。第二章主要讲C++的重要性质,但是感觉降到了C++的精髓,把以往看到的关于C++的书籍做了一个系统的总结,并且从根部挖起,直指要害。

 

  1. 封装(encapsulation): 对象的属性描述包括member various(成员变量)和member function(成员函数)两种。成员变量可以只在类内处理,也可以开放给外界处理,成员函数处理成员变量。C++提供了public、private、protected三种修饰词,以应对不同的数据封装目的。把数据声明为private,不允许外界随意存取,只能通过特定的接口来操作,这就是面向对象的封装特性。
  2. 基类和派生类的继承(inheritance): 人们喜欢把相同的性质抽取出来,成立一个积累,再从中衍化出不同的派生类。严格来讲,派生类除了继承了积累的属性还拥有自己独特的属性,这是派生类之间区别的关键。
  3. this 指针:在处理不同派生类对象中的相同成员变量时,采用的是成员函数的隐藏参数即this指针。
  4. 虚函数和多态(polymorphism):a虚函数是为了对“如果你以一个基类之指针指向一个派生类之对象,那么通过该指针你只能调用基类所定义之成员函数”这条规则的反其道而行的设计。即通俗意义上讲,如果你预期派生类有可能重新定义某一个成员函数,那么在次基类中把此函数设为virtual。b 多态的目的就是让处理“基类之对象”的程序代码,能够完全无碍地继续适当处理“派生类之对象”。c虚函数是C++语言中的多态性质以及动态绑定的关键。d既然抽象类中的虚函数不打算被调用,我们就不该定义它,应该把它作为纯虚函数(在函数声明之后加上“=0”即可)。e拥有纯虚函数者为抽象类,以别于所谓的具体类。f抽象类不能产生出对象实例,但是我们可以拥有指向抽象类的指针以便于操作抽象类的各个派生类。g虚函数派生下去仍为虚函数,并且可以省略virtual关键词。
  5. 类和对象大剖分:在每一个“内含虚函数的类”,编译器都会为它做一个虚函数表,表中的每个元素都指向一个虚函数的地址,同时,编译器也会为类加上一项成员变量,是指向该虚函数的指针(通常被称为vptr)
  6. Object slicing 与虚函数:
  7. 静态成员(变量与函数):static成员变量不是属于对象的一部分,而是类的一部分,程序可以在还没有诞生任何对象的时候就处理此种成员变量,但首先要初始化它;只要access level允许,任何函数都可以存取static 成员变量,但是如果在产生任何object之前就存取class的private static 成员变量,则必须设计一个static 成员函数。
  8. C++程序的生和死--构造函数和析构函数:构造函数就是对象诞生后第一个执行(并且是自动执行)的函数,它的函数名称必定要与类名称相同;析构函数就是对象行将毁灭但未毁灭之前一刻执行(并且是自动执行)的函数,它的函数名称要和类名称相同,但是前面有一个~符号。构造函数的执行是有最基类(most base)至最尾端派生类(most derived);当对象毁灭之前,析构函数的执行则是反其道而行。1、对于全局变量,程序一开始,其构造函数就先被执行,程序结束前其析构函数被执行。2、对局部变量,当对象诞生时,其构造函数被执行,当程序流程将离开该对象的存活范围时,其析构函数执行。3、对于静态对象,当对象诞生时其构造函数被执行,当程序将结束时(此对象因而遭到毁灭)其析构函数才执行,但比全局对戏那个的析构函数要早一步。4、对于new方式产生出来的局部对象,当对象诞生时其构造函数执行,析构函数在其delete时执行。
  9. 运行时类型识别(RTTI)
  10. 动态创建
  11. 异常处理:try 异常可能在其中发生、catch异常处理例程之所在、throw用来丢出一个异常
  12. Template
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值