本文主要是介绍C++ new关键字之:int* i1=new int; 与int* i2=new int();的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
int i1=new int;
int i2=new int();
第一段表达式,i1是一个指向整型的指针。执行第一段语句后,创建了i1这个对象(如0x007ef728),但是指向的值不确定,随机生成一个大数(如-842150451);
第二段表达式,i2也是一个指向整型的指针。执行第二段语句后,创建了i2这个对象(如0x00d7f418),指向的值是确定的,为0。
因为第二段加了(),调用了int类的默认构造,将int型的值默认初始化为0。理解了这个之后,再来:
int i3=new int(10);
这段表达式,基本类似于之前的第二段,唯一的区别就是,i3指向的int对象的值为10。
同样的,来看下面的p1与p2:
typedef int ElementType;
struct LNode
{ElementType data;LNode* next;
};int main()
{LNode* p1 = new LNode;LNode* p2 = new LNode();
}
p1结果:
可以看出p1是一个具体的地址,其指向的LNode没有初始化。
p2结果:
p2也是一个具体的地址,其指向的LNode已经默认初始化。
这篇关于C++ new关键字之:int* i1=new int; 与int* i2=new int();的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!