#include<iostream>
using namespace std;
class A
{
public:
A(int i){cout<<"执行构造函数创建一个对象\n";x=i;}
A(A&a){x=a.x;cout<<"执行复制构造函数创建一个对象\n";}
~A(){cout<<"执行析构函数!\n";}
int get(){return x;}
private:
int x;
};
A func()//去掉func前的&,输出23.变成了按值返回
{
cout<<"跳转到func函数中!\n";
A a(23);//由于对象a是一个局部变量,因此当func函数结束以后,局部变量a也被删除了。
cout<<"对象a的地址:"<<&a<<endl;
return a;//由于对象a消失了,所以func函数返回的其实是一个并不存在的对象的别名。
}
int main()
{
A&r=func();//把并不存在的别名赋给r,因此这个对象的别名也不存在。
cout<<"对象a的副本的地址:"<<&r<<endl;
cout<<r.get()<<endl;//用这个不存在的对象来调用该对象的函数get
return 0;
}
【c++程序】引用容易犯得错误
最新推荐文章于 2024-03-26 20:57:46 发布
