C++——指针,堆栈,引用,函数
C++——指针,堆栈,引用,函数 #include?<iostream>??#include?<stdio.h>??using?namespace?std;????/*?按值传递需要建立参数的副本,当传递较大的对象时,需要用引用或者指针。?在按值传递的过程中,不仅需要复制对象,还要调用默认复制构造函数,该函数的作用就是创建某个对象的临时副本;?返回时,副本会被删除,因此也会调用析构函数。?参数传递中:int*?const?a(指针的值不能边,指针所指向的对象的值可以变)?等同于?int&?a(别名常量,a不能指向其他对象,但值可以改变)?const?int*?const?a?等同于?const?int&?a?*/??class?A??{??????public:??????A(){printf("构造函数执行\n");}??????A(A&)?{printf("复制构造函数执行\n");}??????~A()?{printf("析构函数执行\n");}??};????A?fuc(A?one)??{??????return?one;??}????void?SwapByValue(int?a,?int?b)??{??????int?t;??????t?=?a;??????a?=?b;??????b?=?t;??}????void?SwapByPoint(int*?a,?int*?b)??{??????int?t;??????t?=?*a;??????*a?=?*b;??????*b?=?t;??}????void?SwapByRef(int?&a,?int?&b)??{??????int?t;??????t?=?a;??????a?=?b;??????b?=?t;??}????int?main()??{??????int?a=3,b=4;??????SwapByValue(a,b);??????printf("%d?%d\n",a,b);??????SwapByPoint(&a,&b);??????printf("%d?%d\n",a,b);??????SwapByRef(a,b);??????printf("%d?%d\n",a,b);??????A?a1;??????A?b1;??????b1?=?fuc(a1);??????return?0;??}?