C++中引用和匿名对象的理解和本质剖析
作者:网络转载 发布时间:[ 2016/4/14 11:52:42 ] 推荐标签:.NET 测试开发技术
说明:
1、声明引用时,C语言将引用声明的是指针常量。(为啥要初始化引用原因)
2、引用使用,C语言隐藏了对常指针自动间接引用,让我们完全不用了解指针
3、初始化引用时,C语言隐藏了对变量的取地址符&操作,让我们感觉是在直接给变量起别名
应用的剖析到此结束了,下面我们来说说匿名对象吧。
什么是匿名对象?
匿名对象可以理解为是一个临时对象,一般系统自动生成的,如你的函数返回一个对象,这个对象在返回时会生成一个临时对象。
匿名对象的生命周期(很重要!!!)
class Cat
{
public:
Cat()
{
cout<<"Cat类 无参构造函数"<<endl;
}
Cat(Cat& obj)
{
cout<<"Cat类 拷贝构造函数"<<endl;
}
~Cat()
{
cout<<"Cat类 析构函数 "<<endl;
}
};
void playStage()
//一个舞台,展示对象的生命周期
{
Cat();
/*在执行此代码时,利用无参构造函数生成了一个匿名Cat类对象;执行完此行代码,
因为外部没有接此匿名对象的变量,此匿名又被析构了*/
Cat cc = Cat();
/*在执行此代码时,利用无参构造函数生成了一个匿名Cat类对象;然后将此匿名变
成了cc这个实例对象,此匿名对象没有被析构。*/
cout<<"cc 对象好没有被析构"<<endl;
}
int main()
{
playStage();
system("pause");
return 0;
}
输出:
Cat类 无参构造函数
Cat类 析构函数
Cat类 无参构造函数
cc 对象好没有被析构
Cat类 析构函数
说明:
1、在执行playStage( )函数中的Cat( )时,生成了一个匿名对象,执行完Cat( )代码后,此匿名对象此消失。这是匿名对象的生命周期。
2、在执行playStage( )函数中Cat cc = Cat();时,首先生成了一个匿名对象,因为外部有cc对象在等待被实例化,然后将此匿名对象变为了cc对象,其生命周期变成了cc对象的生命周期。
总结:
如果生成的匿名对象在外部有对象等待被其实例化,此匿名对象的生命周期变成了外部对象的生命周期;如果生成的匿名对象在外面没有对象等待被其实例化,此匿名对象将会生成之后,立马被析构。
后希望能对大家有帮助,沙米才疏学浅,有什么错误请留言指正,谢谢大家。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南