您的位置:首页 > 编程语言 > C语言/C++

C++中关于临时量和临时对象

2018-02-20 12:34 288 查看
一、临时量的生成
1、内置类型产生的临时量:常量 不可更改
2、自定义类型产生的临时量:变量 可以更改
3、隐式产生的临时量:常量
二、返回值
1、返回内置类型的时候,产生的都是寄存器的立即数
2、返回自定义类型的时候,也是通过寄存器返回的,但是用指针或者引用来接收返回值时,编译器会自动产生临时量
3、返回对象时,一律产生临时量,并把临时量的地址作为实参传递进去,被调用函数通过访问ebp+8就能够访问临时量的地址
三、返回对象
1、函数返回对象时,直接返回临时对象
Test Getobject(Test &t)
{
int value = t.GetValue();
return Test(value);

//Test tmp(value);
//return tmp;
}这样可以提高效率

2、接收一个返回对象的返回值时,在定义的时候直接接收返回值,是初始化的过程并非赋值int main()
{
Test t1(10);
Test t2 = GetObject(t1);//调用拷贝构造函数

//Test t2;//先构造函数
//t2 = GetObject(t1);//赋值运算符的重载函数 析构函数

return 0;
}四、实参传递形参
实参传递形参的过程是初始化的过程,调用拷贝构造函数
五、函数在调用点之前进行声明的原因
1、看实参和形参的类型、个数是否匹配
2、根据函数调用点返回值的类型和声明或定义时的返回值类型是否匹配
3、根据返回值的类型确定返回方式
六、当前对象的生成步骤
三步
1、分配内存
2、构造成员对象
3、构造自己

七、引用临时对象
当引用一个临时对象时,临时对象的生存周期就变得和引用的生存周期一样,引用会提高临时对象的生存周期CGoods &q = CGoods("shangpin1",30,8.5);//调用带三个参数的构造函数 没有析构函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: