c++创建对象的一个小问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 00:47:38
一般创建对象都是 这样命名的
class lei{....}
lei dx;// 调用构造函数

如果创建个指针为对象 为什么不调用构造函数呢
例 lei *ptr;

可以这样吗?

lei *ptr;
这样只是创建一个指针 并没有分配内存 指针还不知道指向那里

lei *ptr=new A;
让指针指向类A 这样类A要分配内存 会调用构造函数
那个类要分配空间那个类就要调用构造函数

因为是指针.

当它指向某class lei对象时,它将使用指向的对象的存储单元和数值.

所以不调用构造函数来分配存储单元和初试化变量数值.

构造函数的调用,是在一个对象产生的时候,定义一个指针的话,并没有为这个指针分配空间,也就是对象并没有产生,所以没有调用构造函数,当为这个指针分配空间的时候,构造函数就被调用了。
比如:
lei *ptr;//定义指针
ptr=new ptr;//分配空间,这个时候,构造函数被调用

指针要初始化,这用使用很危险的!
lei *ptr的含义是指定义一个指向lei对象的指针。但是该指针没有被初始化,很可能指向的不是lei类的对象,在调用该指针的时候,要做类型转换,比如把int转换成lei。这样修改未知的内存空间会造成灾难性后果。