构造函数
在类对象创建的时候就会执行类的构造函数,且不需要返回值,是特殊的类的成员函数,且与类的名字相同。
用途:初始化类的成员。
实例:
#include<bits/stdc++.h>
using namespace std;
class sss{
public:
int a,b;
sss(int x,int y) {
a=x,b=y;
printf("create\n");
}
int up() {
return a+b;
}
};
int main() {
int s=1,t=6;
sss x(s,t);
printf("%d\n",x.up());
return 0;
}
此时会输出以下内容:
create
7
析构函数
在类对象被删除时调用类的析构函数,没有返回值,且$\color{#FF0000}{不能有任何参数}$,名字与类的名字相同,然后在前面加一个”~”。
作用:一般在函数结束时,函数内的类将会被删除,在释放内存时析构函数会被调用,可以用于输出等。
实例:
#include<bits/stdc++.h>
using namespace std;
class sss{
public:
int a,b;
sss(int x,int y) {
a=x,b=y;
printf("create\n");
}
~sss(void) {
printf("delete\n");
}
int up() {
return a+b;
}
};
int main() {
int s=1,t=6;
sss x(s,t);
printf("%d\n",x.up());
return 0;
}
此时会输出以下内容:
create
7
delete
拷贝构造函数
当在用另一个同类的对象初始化刚创建的对象,或者将类的对象用作参数被函数引用,或者说返回一个类的对象,将会调用拷贝构造函数,拷贝构造函数是一种比较特殊的构造函数,所以单分出来讲。定义比较复杂,我写在下面:
class sss{
public:
sss(const sss &a) {
//代码
}
};
作用:初始化。
实例:
#include<bits/stdc++.h>
using namespace std;
class sss{
public:
int a,b;
sss(int x,int y) {
a=x,b=y;
printf("create\n");
}
~sss(void) {
printf("delete\n");
}
sss(const sss &s) {
a=s.a,b=s.b;
printf("copy\n");
}
int up() {
return a+b;
}
};
sss f(sss t) {
return t;\\此函数调用时和返回时都会调用拷贝构造函数
}
int main() {
int s=1,t=6;
sss x(s,t);
sss y=x;\\调用拷贝构造函数
f(y);
printf("%d\n",x.up());
return 0;
}
此时会输出以下内容:
create
copy
copy
copy
delete
delete
7
delete
delete