A. 正确。define是预处理器宏,在编译阶段之前进行处理,一般用于实现简单的文本替换。而const变量是在程序运行期间使用的,因此它们的生命周期和作用域是不同的。
B. 错误。在编译阶段,define宏不会进行类型安全检查,它只是简单的文本替换,没有分配内存空间。而const常量在编译时会被分配内存空间,并具有确定的数据类型。
C. 正确。由于const常量在编译时被分配内存,因此可以避免在程序运行期间进行不必要的内存分配,从而节省空间。
D. 正确。define宏在定义的时候只是进行文本替换,不会分配内存空间。
const object *p = new object() ; object *p1 = new object() ;p 和 p1需要的内存是一样的。