#include <iostream>
using namespace std;
class Coord{
public:
Coord(int a=0,int b=0);
Coord(const Coord &p);
~Coord()
{
cout<<"调用析构函数/n";
}
void print()
{
cout<<x<<endl<<y<<endl;
}
int getX()
{
return x;
}
int getY()
{
return y;
}
private:
int x,y;
};
Coord::Coord(int a,int b)
{
x=a;
y=b;
cout<<x<<endl;
cout<<y<<endl;
cout<<"调用构造函数/n";
}
Coord::Coord(const Coord &p)
{
x=p.x;
y=p.y;
cout<<x<<endl;
cout<<y<<endl;
cout<<"调用拷贝构造函数/n";
}
Coord fun(Coord p)//函数返回值是对象
{
cout<<"-----fun-------/n";
int a,b;
a=p.getX()+10;
b=p.getY()+20;
Coord p4(a,b);
return p4;
}
int main()
{
Coord p1(30,40);
Coord p2;
Coord p3(p1);
p2=fun(p3);//返回值必须是对象,不然会引起莫名错误。1.调用拷贝构造函数,2调用构造函数,3调用拷贝构造函数 1 释放形参对象的析构函数 2 p4的析构函数 3 无名对象析构函数
p2.print();
//释放P1 P2 P3的析构函数
}
本文通过一个具体的C++程序示例,详细解析了构造函数与析构函数的工作原理,包括默认构造函数、带参数构造函数、拷贝构造函数及析构函数的调用时机,有助于理解C++中对象生命周期管理。
550

被折叠的 条评论
为什么被折叠?



