class person{
public:
person(){
cout<<"person构造函数调用"<<endl;
}
~person(){
if(m_height!=0){
delete m_height;
m_height=NULL;
}
cout<<"person析构函数调用"<<endl;
}
person(int age,int height){
m_age=age;
m_height=new int(height);//用指针来接收堆区开辟的值
cout<<"person有参函数构造调用"<<endl;
}
person(const person &p){
cout<<"person 拷贝函数调用"<<endl;
m_age=p.m_age;
// m_height=p.m_height;//编译器默认实现(拷贝函数的调用)就是这行代码
//所以要进行深拷贝
m_height=new int(*p.m_height);
}
int m_age;
int *m_height;
};
void test1(){
person p1(18,175);
cout<<"p1的年龄为:"<<p1.m_age<<" p1的身高为:"<<*p1.m_height<<endl;
person p2(p1);
cout<<"p2的年龄为:"<<p2.m_age<<" p2的身高为:"<<*p2.m_height<<endl;
}
int main(){
test1();
return 0;
}
2022060616 c++深浅拷贝
最新推荐文章于 2024-07-17 23:01:07 发布