将对象判断为空的操作和释放对象的操作合并到一个宏里。两句的本质是一样的。
第一句判断x非空之后调用x的成员函数Release(),再将x指向的内容改为NULL。
第二句是调用C语言库函数中的free()函数将p指针所指向的数据释放掉,以使得这块内存可以被其他变量或对象使用。
非常感谢您的指点~
我是从c#转学c++的 ,所以很多都不懂。
这里的 x 、p 是在哪定义的?换成其他的字母可以吗?
我在学习别人的源码,并没有找到这2个变量的定义。
@不灭的香烟: 这两个字母可以理解为函数的形式参数,具体使用的时候应使用具体变量的值去替代。但是要记住宏定义和函数并不是一回事。在宏定义中,这里的p,x等变量只是简单的字符替换。而在函数中还存在保存变量,传入参数和返回值等一系列过程。
@不灭的香烟: 另外这里使用宏定义而不是函数的原因是可以提高程序编译链接的效率
百度 预定义 宏命令