求解:c++的构造函数问题

来源:百度知道 编辑:UC知道 时间:2024/06/25 19:29:43
#include <iostream.h>
class Q
{
int x,y;
public:
Q(int a=0,int b=0)
{
x=a;y=b;cout<<x<<'\t'<<y<<'\n';
cout<<"调用构造函数";
}

~Q()
{
cout<<"调用析构函数\n";
}
};
void main()
{
Q * pobj=new Q(500,1000);

delete pobj;

}
请问用new Q(500,1000);可以创建一个对象吗?这个对象的是什么?有没有名称?还有这个对象的生成期

new Q(500,1000)就相当于new int(10),lz说new int(10)可以创建一个int变量吗?!。。。它申请了一块空间来存放Q类的实例对象,根据lz的程序,pobj指针指向该对象!
至于对象的生存期,肯定是在delete pobj之后。这相当于
int *a = new int(10); delete a;之后仍然有一块空间其值为10,只是这块空间用户无法获取,但还是存在!

new Q(500, 1000)可以创建一个对象;这个对象是Q类的一个实体,它包含Q类米面能有的各种数据和函数;但是这个对象没有名字,唯一能找到这个对象在内存位置的工具就是你定义的指针 *pobj;这个对象从new Q(500, 1000)语句执行完毕以后正式存在,并且将一直存在,除非使用delete pobj;语句将该对象释放掉。 如果该对象按照如此方法创建,而没有delete那么将会造成内存泄露.