0
点赞
收藏
分享

微信扫一扫

构造函数与析构函数及三大调用

德州spark 2022-03-31 阅读 48
数据结构
`#include"stdafx.h"
#include<string>
#include<iostream>
using namespace std;
class person
{
public:
person()
{
cout<<"打印构造函数"<<endl;
}
};

int main()
{
person p;      //创建对象p

}
此代码是为了演示构造函数在创建对象时系统  *自动*  调用的证明


编译结果
*******打印构造函数
********请按任意键继续. . .




析构函数:
对象在销毁前,会自动调用析构函数,而且只会调用一次
#include"stdafx.h"
#include<string>
#include<iostream>
using namespace std;
class person
{
public:
person()
{
cout<<"打印构造函数"<<endl;
}
~person()
{
cout<<"析构函数调用"<<endl;
}
};

int main()
{
person p;      //创建对象p

}

结果
打印构造函数
析构函数调用
请按任意键继续. . .





函数调用三大方法{括号,显示,隐式}
括号法
#include"stdafx.h"
#include<string>
#include<iostream>
using namespace std;
class person
{
public:
person()

{
cout<<"无参构造函数"<<endl;
}
person(int a)
{
age=a;
cout<<"有参构造函数"<<endl;
}
person(const person &p)//作业群person里,你还没答案的作业文件叫型参p,如果指定了作业群里面的形参(传实参p2,就是想嫖谁的作业了),就是抄p2同学作业文件中的内容,结果,给同属于作业群中的自己作业文件p3,由于是抄的,说出去不好听,所以用引用符“&”麻痹自己,同时你抄归抄你不能改老师中的收作业的群名所以要用const
{
age=p.age;
cout<<"拷贝函数调用"<<endl;
}
~person()
{
cout<<"析构函数调用"<<endl;
}
int age;
};
void main()
{
person p;//默认构造函数的调用不要加(),不能写成person p()否则系统会把它误认为函数声明,不会认为是创建对象的过程,不会主动调用构造函数
person p2(10);//有参函数调用
person p3(p2);//p2是实参,p3抄p2
cout<<"年龄为"<<p2.age<<endl;
cout<<"年龄为"<<p3.age<<endl;

}


显示法
void main()
{
person p;
person p2=person(10);  //匿名对象person(10),叫p2
person p3=person(p2);//拷贝
}

隐式法
void main()
{
person p4=10;//私底下自动转换person p4=person(10)
person p5=p4;//拷贝
}
举报

相关推荐

0 条评论