#pragma once
#include "iostream"
using namespace std;
class teacher
{
public:
teacher(int x,int n);
teacher(teacher& ty);
~teacher(void);
int geta()
{
cout<< "&p=" <<&p<<endl;
return a;
}
private:
int a;
int count;
int *p;
};
teacher::teacher(int x,int n)
{
cout<<"teacher::teacher(int x,int y,int n)"<<endl;
a=x;
count=n;
p=new int[count];
}
teacher::teacher(teacher& ty)
{
cout<<"teacher::teacher(teacher& ty)"<<endl;
a=ty.a;
p=ty.p;
}
teacher::~teacher(void)
{
}
int main()
{
teacher a1(1,5);
teacher a2=a1;
teacher a3(a1);
cout << "a1= "<< a1.geta() <<endl;
cout << "a2= "<< a2.geta() <<endl;
cout << "a3= "<< a3.geta() <<endl;
}
以上是一个拷贝构造函数 的实验代码 在构造函数中new了一个指针p的空间 并且在拷贝的时候p=ty.p; a1对象的p地址赋给a2对象p地址 这样不是两个对象的指针p的地址指向同一个空间吗 或者说两者的地址相同 但是通过打印&p发现 两者 不同 这是为什么