1、关于指针判断为空的问题
在函数中定义一个指针变量的时候,如果没有初始化,例如
CBase * cBase;
系统会自动分配一个地址,如下
在VC Debug版本里,栈中分配的值都会先用0xCCCCCCCC来处理一下,所以大家在Debug模式下调试程序发现在引用0xCCCCCCCC这样的值,就说明在试图使用一个没有初始化的值。
这时候,如果接下来要判断cBase是否为空,如:if(cBase){...},是没有作用的。
所以,必须
CBase * cBase=null;
2、多态的特性
今天就遇到了一个问题,必须用多态解决。
有很多不同类型的设备,每个设备是一个类,所有设备在一个Tree中显示。当用户选择一个设备时,需要显示该设备的特性信息。
关键是你不知道到底用户选择的是哪个设备,所以也不知道到底调用哪个类的显示函数。
所以就为所有设备定义一个基类。各个设备子类,重载基类的显示函数。