Class A{};
int main()
{
A a;
A& aRef = a;
A b = aRef;
}
上面的几行语句我理解的是 初始化一个A类的对象a,再初始化一个A类型的引用aRef, 然后用对象a给引用aRef赋值 ,此时,a和aRef表示的是一个对象。然后初始化一个A类的对象b,然后用引用aRef给对象b赋值 ,那么此时,a,b,aRef三者都是表示内存中的同一个对象吗?这整个赋值的过程中,构造函数是都是怎么执行的?
...全文
3509打赏收藏
用引用给变量赋值 不明白的?
Class A{}; int main() { A a; A& aRef = a; A b = aRef; } 上面的几行语句我理解的是 初始化一个A类的对象a,再初始化一个A类型的引用aRef, 然后用对象a给引用aRef赋值 ,此时,a和aRef表示的是一个对象。然后初始化一个A类的对象b,然后用引用aRef给对象b赋值 ,那么此时,a,b,aRef三者都是表示内存中的同一个对象吗?这整个赋值的过程中,构造函数是都是怎么执行的?
A a; //定义一个A的对象a,调用默认构造函数给a分配空间。
A& aRef = a; //定义一个a的引用aRef。aRef就是a,二者的内存空间完全一样。
A b = aRef; //定义一个A的对象b,并且用拷贝构造函数给b分配空间。
a和aRef是一回事,就好象西红柿甲与蕃茄甲的关系一样。b与a的关系,则是西红柿甲与西红柿乙的关系一样。二者有很多相似之处,但二者就是不同是一个东西。至于二者是如何相似,甚至某些个别相同的,具体要看你的拷贝构造函数是如何定义的了。