//#include<iostream>
//using namespace std;
//
//class Stu
//{
//public:
// int *a;
// Stu()
// {
// a = new int[2];
// a[0] = 13;
// a[1] = 12;
// }
// Stu(const Stu& b)
// {
// //默认拷贝构造函数不会申请新的空间,直接与被构造函数共用同一个空间
// //深拷贝,给拷贝的值申请空间,如果 指针成员不需要拷贝,使用默认拷贝构造函数就行了
// this->a = new int[2];
// this->a[0] = b.a[0];
// this->a[1] = b.a[1];
// //memcpy(this->a, b.a, 8); //memcpy内存拷贝关键字,(目标空间,拷贝空间,字节数)
// }
// ~Stu()
// {
// delete[] a;
// }
//};
//
//////传递引用
////Stu& fun(Stu& a)
////{
//// return a;
////}
//// 传递指针
////Stu& fun(Stu* a)
////{
//// return *a;
////}
//
//int main()
//{
// //浅拷贝的问题,在拷贝指针变量时,会重复释放空间,造成系统崩溃
// Stu at;
// cout << at.a[0] << " " << at.a[1] << endl; //这里已经将指针a的空间释放了,此时定义的指针空间已经回归系统;
// /*fun(&at);*/ //传递指针
// Stu st;
// cout << st.a[0] << " " << st.a[1] << endl; //此时会再次释放指针的空间,但此时指针a的空间已经不存在了
// //所以此时会释放系统的空间,但是是非法的,所以程序崩溃了
// //解决空间二次释放空间造成奔溃的解决方法有深拷贝,传地址,传引用
//
// return 0;
//}