C语言拷贝函数,析构函数的调用
会调用拷贝函数的三种情况
(1)使用对象1给对象2初始化
(2)将对象作为函数参数
(3)将对象作为函数返回值输出
书本上的描述:
(1)用同类型的另一个对象来初始化某对象
(2)给对象制作拷贝,并将其当做参数传给某函数
(3)给对象制作拷贝,并将其当做函数返回值,返回给调用方
笔试题1:
#include
using namespace std;
class Line
{
public:
int getLength(void);
Line(int Len);//有参构造
Line(const Line &obj);//构造函数
~Line();
private:
int *ptr;
};
Line::Line(int len)
{
//构造函数
cout<<"执行有参构造"<
*ptr=len;
}
Line::~Line(void)
{
//析构函数
cout<<"析构"<
delete ptr;
num++;
cout<<"析构被执行的次数:"<
int Line::getLength(void)
{
return *ptr;//指针指向的地址上的值
}
//对象作为参数 也会调用拷贝函数
void display(Line obj)
{
cout<<"Length of line:"<
//拷贝构造函数
Line::Line(const Line &obj)
{
cout<<"拷贝构造函数"<
*ptr=*obj.ptr;
}
int main()
{
Line line1(10);//打印执行构造
Line line2=line1;
display(line1);
display(line2);
return 0;
}
请写出打印出的内容
Line line(10);//执行一次构造函数
Line line2=line1;//line2没有执行无参,默认构造函数,直接执行了拷贝构造
display(line1);//对象作为参数传入函数,执行拷贝构造,执行display(),然后执行析构函数
display(line2);//与display(line1)一样,执行拷贝构造,执行display(),然后执行过析构函数
return 0;//调用line1,line2两个对象析构