点击(此处)折叠或打开
-
class demo;
-
-
void do_delete(demo *p){
-
delete p;
-
}
-
class demo{...};
-
-
int main(){
-
auto p = new demo();
-
do_delete(p);
-
- }
点击(此处)折叠或打开
-
class demo;
-
-
void do_delete(demo *p){
-
checked_delete(p);
-
}
-
class demo{...};
-
-
int main(){
-
auto p = new demo();
-
do_delete(p);// 编译出错
-
- }
点击(此处)折叠或打开
-
template<class T> inline void checked_delete(T *x){
-
typedef char type_must_be_complete[sizeof(T)?1:-1];// 如果是非完整,sizeof返回0,数组大小为-1,报错
-
(void) sizeof(type_must_be_complete);
-
delete x;
- }