c++中的类,本质上就是用户自定义的一个数据类型,因此它和内置数据类型在使用上有很多相似之处。 可以对比内置数据类型来理解。假设有一个test的class。要定义类的指针,如下:
test o_o; //定义test类的对象 o_o
test *p = &o_o; //定义一个类的指针,指向o_o
与int类型对比:
int o_o; //定义一个int类型的对象o_o
int *p = &o_o; //定义一个int类型的指针,指向o_o
实际上是类似的。 不同之处在于构造函数、析构函数那块。
同样也可以使用new进行动态分配 。
int *p = new int (2); //动态分配一个int对象并初始化为2
类test的动态分配也类似:
test *po_o = new test; //动态分配一个test对象,这里调用的是默认构造函数。
不是,同样是new可是含义是不一样的。
对于int *parray = new int;这个的含义是在系统的堆空间上分配为int,也就是4个字节的空间给parray,这个时候parray里所指的值是没有含义的,如你所说没有定义值。
但是对于Intarray * parray = new Intarray来说,会激发Intarray的构造函数,是否有意义则取决于Intarray的构造函数的内容了。
我是当一样来理解的。
应该写成这样吧:
Intarray * parray = new Intarray();//括号
int * parray = new int();
两个都不止是申明,已经初始化了。
第一句是创建(实例化)了一个Intarrya的对象,指针parray指向它。
第二句是创建(分配了)了int类型的内存空间,指针parray指向那个空间。
两个指针都已初始化了。