1、临时量
- 内置类型生成的临时量为常量,在寄存器中。
- 自定义类型生成的临时量为变量,在内存中。
- 隐式生成的临时量为常量。
2、临时对象的生存周期
表达式结束
3、临时对象的优化
临时对象的目标:为了生成新的对象
以生成临时对象的方法生成新的对象
引用能提升临时对象的生存周期
CGoods ggood1("good1", 10.1, 20); //存放在.data段,从程序一开始到结束
int main()
{
CGoods good3; //调用默认构造函数,从调用点到栈帧结束
CGoods good4(good3); //调用拷贝构造函数,从调用点到栈帧结束
good4 = good3; //调用赋值运算符的重载函数
static CGoods good5("good5", 10.1, 20); //存放在.data,调用点到程序结束
CGoods good6 = 10; //临时对象的优化
CGoods good7(10); //无优化
CGoods good8 = CGoods("good8", 10.1, 20); //调用三个参数的构造函数生成good8
good6 = 20; //表达式结束,对象销毁
good7 = CGoods(20); //显式生成
good8 = (CGoods)("good8",10.1, 20); //选取20,显式生成
CGoods* pgood9 = new CGoods("good9", 10.1, 20); //在heap上,new开始,delete结束
CGoods* pgood10 = new CGoods[2]; //动态开辟对象数组,生成两个对象,delete两个析构
std::cout << "------------------" << std::endl;
CGoods* pgood11 = &CGoods("good11", 10.1, 20); //指向临时对象地址,pgood11指向无效地址
std::cout << "------------------" << std::endl;
//CGoods* pgood12 = 20;
CGoods& rgood12 = CGoods("good11", 10.1, 20); //引用临时对象生成的内存
std::cout << "------------------" << std::endl;
const CGoods& rgood13 = 20; //隐式生成的临时量为常量,要用const修饰
delete pgood9;
delete[] pgood10;
return 0;
}