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);//调用带三个参数的构造函数 没有析构函数
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);//调用带三个参数的构造函数 没有析构函数
相关文章推荐
- 关于C++中的临时对象/常与非常&左右值/的阐述
- 关于C++中的临时对象问题
- 关于C++中在函数中按值返回、临时对象、拷贝构造函数的一点理解
- 关于C++临时对象的一道题目
- 关于C++中的临时对象问题
- 关于C++中的临时对象问题
- 关于c++临时对象产生的规则
- 关于c++临时对象几个链接
- c++对象模型研究1:关于对象
- 第三十九题 关于C++中类的对象的大小
- C++中的临时对象
- More Effective C++ ——019_理解临时对象的来源
- 理解C++中的临时对象
- c++中的临时对象
- [深度探索C++对象模型]关于成员初始化列表(member initiallization list)
- 关于C++项目指针对象未被初始化的问题(0xcdcdcd)
- c++ 临时对象
- c++ 临时对象的来源
- c++对象模型(关于STRUCT和CLASS)
- C++中的临时对象