深入浅出MFC笔记第二章

1.       函数的调用是依赖指针的原始类型而不管它实际指向何方。

2.       虚函数是在程序执行期进行的动态绑定或后期绑定;而非虚函数是程序在编译时间进行的静态绑定或前期绑定。

3.       纯虚拟函数不需定义其实际动作,它的存在只是为了在衍生类别中被重新定义,只是为

了提供一个多态接口。只要是拥有纯虚拟函数的类别,就是一种抽象类别,它是不能够

被具象化的,也就是说,你不能根据它产生一个对象。

virtual void display() = 0; // 注意"= 0"

4.       抽象类别不能产生出对象实体,但是我们可以拥有指向抽象类别之指针。

5.       虚拟函数衍生下去仍为虚拟函数,而且可以省略virtual 关键词。

6.       每一个「内含虚拟函数的类别」,编译器都会为它做出一个虚拟函数表,表中的每一笔元素都指向一个虚拟函数的地址。此外,编译器当然也会为类别加上一项成员变量,是一个指向该虚拟函数表的指针vPtr(4个字节)

7.       类对象的内存区块中不能看到任何与成员函数有关的任何东西。

8.       (CDocument*)(&mydoc))->func()只是把指针的类型改变了,并没有改变指针所指向的内容类型,所以会调用指针原来指向的函数。(CDocument)mydoc).func()下上的强制类型转换会造成对象切割,因此会调用CDocument类型中的函数。

9.       静态成员变量在使用前,必须初始化,并且初始化不受private权限的控制。不要把static成员变量的初始化放在构造函数或头文件中,因为构造函数或头文件可能被调用多次。应该放在main函数或全局函数中,或任何函数之外。

class SavingAccount

{

private:

  char m_name[40];  // 存户姓名

  char m_addr[60];  // 存户地址

  double m_total;   // 存款额

  static double m_rate;    // 利率

  ...

public:

  static void setRate(double newRate) { m_rate = newRate; }

  ...

};

double SavingAccount::m_rate = 0.0075;   // 设置 static 成员变量的初值

 

10.   如果你希望在产生任何object 之前就存取其class private static 成员变量,则必须设计一个static 成员函数。

11.   C++ new 运算子和C malloc 函数都是为了配置内存,但前者比之后者的优点是,new 不但配置对象所需的内存空间时,同时会引发构造式的执行。

12.   当衍生类别的对象诞生之时,构造式的执行是由最基础类别至最尾端衍生类别;当对象要毁灭之前,析构式的执行则是反其道而行。

13.   对于静态(static)对象,当对象诞生时其构造式被执行;当程序将结束时(此对象因而将遭致毁灭)其析构式才被执行,但比全域对象的析构式早一步执行。

14.   四种不同的对象生存方式:

1)      堆栈(stack)之中产生它:

void MyFunc()

{

CFoo foo; // 在堆栈(stack)中产生foo 对象

...

}

2)      在堆积(heap)之中产生它:

void MyFunc()

{

...

CFoo* pFoo = new CFoo(); // 在堆(heap)中产生对象

}

3)      产生一个全域对象(同时也必然是个静态对象):

CFoo foo; // 在任何函数范围之外做此动作

4)      产生一个区域静态对象:

void MyFunc()

{

static CFoo foo; // 在函数范围(scope)之内的一个静态对象

...

}

 

15.   执行时期型别信息(Runtime Type InformationRTTI: 在程序执行过程中知道某个对象是属于哪一种类别。使用方法:首先包含typeinfo.h,其次使用typeid运算子。

typeid(GIFimage) == typeid(*type)  //GIFimage是类型名,type是对象。

编译时需选用/GR 选项。// RTTI.CPP - built by   C:/> cl.exe -GR rtti.cpp <ENTER>

16.   态生成这段没看懂。~

   这笔记写了有一段时间了,一直没放上来! 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值