c++高手请进!

来源:百度知道 编辑:UC知道 时间:2024/06/01 14:53:58
#include<stdio.h>
class abc;
void del(abc* pobj){
delete pobj;
}

class abc{
public:
abc(){
printf("abc\r\n");
}
~abc(){
printf("~abc\r\n");
}
};

int main()
{
abc *pobj = new abc;

del(pobj);
}
abc *pobj = 不是拷贝构造函数吗,不应该输出abc啊?
为什么不输出~abc?

你把del放在class abc 的定义后面.正如 zzz822163的做法
理由是:del放在class abc 的前面,del并不知道 abc有多大,不知道它的内容,因此无法选择它的成员.

abc *pobj;
每次创建类的对象的时候自动调用构造函数;

void del(abc* pobj){
delete pobj;
}
在delete的时候没有条用析构函数,不输出~abc

#include<stdio.h>
class abc;

class abc{
public:
abc(){
printf("abc\r\n");
}
~abc(){
printf("~abc\r\n");
}
};
void del(abc* pobj){
delete pobj;
}

int main()
{
abc *pobj = new abc;

del(pobj);
}

用new表达式动态产生一个对象时如果
Type *a = new Type(参数列表);
是调用相对应的构造函数,你上面没有参数就调用默认构造函数

好难啊