C++小程序输出结果
来源:百度知道 编辑:UC知道 时间:2024/07/08 21:33:17
#include <iostream>
using namespace std;
class A
{
public:
A(){ cout<<"Ak1"; }
A(const A&){ cout<<"Ak2"; }
A& operator=(const A&) {cout<<"A=";return *this;}
~A(){ cout<<"Ad"; }
};
A& fun( A x){cout<<"fun";return x;}
int main()
{
A a;
cout<<"L1"<<endl;
A b = fun(a);
cout<<"L2"<<endl;
A& r = b;
cout<<"L3"<<endl;
A t= a;
return 0;
}
/*
输出结果:
AK1L1
AK2funAdAk2L2
L3
Ak2AdAdAd
*/
对于输出结果有点模棱两可。尤其是为什么执行 A& r = b; 时,为什么不执行任何操作?该表达式在这起什么作用?
还有就是 & 操作符 到底是干嘛用的,一直很模糊。。。
using namespace std;
class A
{
public:
A(){ cout<<"Ak1"; }
A(const A&){ cout<<"Ak2"; }
A& operator=(const A&) {cout<<"A=";return *this;}
~A(){ cout<<"Ad"; }
};
A& fun( A x){cout<<"fun";return x;}
int main()
{
A a;
cout<<"L1"<<endl;
A b = fun(a);
cout<<"L2"<<endl;
A& r = b;
cout<<"L3"<<endl;
A t= a;
return 0;
}
/*
输出结果:
AK1L1
AK2funAdAk2L2
L3
Ak2AdAdAd
*/
对于输出结果有点模棱两可。尤其是为什么执行 A& r = b; 时,为什么不执行任何操作?该表达式在这起什么作用?
还有就是 & 操作符 到底是干嘛用的,一直很模糊。。。
A& r = b; 声明r为b的别名,即这两个变量名被编译器翻译成指向相同的地址。今后对r操作等同于对b操作。
由于指向相同的地址,所以没有任何对象的构造与析构。
给楼主一个建议哈
试一下赋值构造函数
比如 声明 A x,A y
x = y
&是引用,变量的别名的意思。
&是取地址,就是取变量名的地址,对这个地址进行操作,也就是直接修改变量的存储内存