实例化对象:“new”与非“new”
除了内存分配之外,以下几行之间还存在哪些功能差异代码?
Time t (12, 0, 0); //t is a Time object Time* t = new Time(12, 0, 0);//t is a pointer to a dynamically allocated Time object
非“新”实例化
第一行,Time t (12, 0, 0);,在本地范围内创建一个 Time 类型的变量 t。该变量通常分配在堆栈上,并在其作用域结束时被销毁。
'new'实例化
相反,第二行,Time* t = new Time(12, 0, 0);,(通常)通过 ::operator new() 或 Time::operator 在堆上分配一块内存new() 函数。然后使用 Time::Time() 构造函数初始化该内存块,并将新分配的内存的地址设置为 this 指针。指向已分配内存的指针存储在变量 t 中。
其他差异
虽然主要差异在于内存分配,但还有一些其他细微差别:
以上是'new”与非'new”对象实例化:主要功能差异是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!