delete (p); cout<<"调用函数delete(void *p)\n"; } }; int main(void) { C *p1; p1=new C; p1->show(); delete(p1); getchar(); return 0; } 执行结果: 总结:重载后new时先分配空间,再调用构造函数,delete时先调用析构函数,后释放空间。
三)构造函数中使用new关键字的类,应: P375 1)若析构函数通过对指针类成员使用delete来释放内存,则每个构造函数都应该使用new来初始化指针,或将它设置为空指针nullptr(因为delete(无论是带[]或者不带[]的)都可以用于空指针。p364) 2)构造函数中要么使用new[],要么使用new,不能混用。如果构造函数使用new[],则...
delete (p); cout<<"调用函数delete(void *p)\n"; } }; int main(void) { C *p1; p1=new C; p1->show(); delete(p1); getchar(); return 0; } 执行结果: 总结:重载后new时先分配空间,再调用构造函数,delete时先调用析构函数,后释放空间。