c++类的指针定义

2024-11-29 12:51:18
推荐回答(3个)
回答1:

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对象,这里调用的是默认构造函数。

回答2:

不是,同样是new可是含义是不一样的。
对于int *parray = new int;这个的含义是在系统的堆空间上分配为int,也就是4个字节的空间给parray,这个时候parray里所指的值是没有含义的,如你所说没有定义值。
但是对于Intarray * parray = new Intarray来说,会激发Intarray的构造函数,是否有意义则取决于Intarray的构造函数的内容了。

回答3:

我是当一样来理解的。
应该写成这样吧:
Intarray * parray = new Intarray();//括号
int * parray = new int();

两个都不止是申明,已经初始化了。
第一句是创建(实例化)了一个Intarrya的对象,指针parray指向它。
第二句是创建(分配了)了int类型的内存空间,指针parray指向那个空间。
两个指针都已初始化了。