一、构造函数:
主要用于对成员变量进行赋值,如果没有手动创造构造函数,编译器会自动创造,无需手动调用。
语法:
类名 (){}
1.构造函数没有返回值,不写void
2.函数名与类名相同
3.构造函数可以有参数,有参构造可以重载
4.程序在调用对象时会自动调用,无需手动调用,且只会调用一次
例子:包含调用方式
#include<iostream>
#include<vector>
#include<string>
using namespace std;
//构造函数的名字必须跟类名相同
class pointer {
int* p;
public:
pointer() {//无参数的构造函数,当结构体中没有构造函数时,会默认一个无参数的构造函数
cout << "无参数构造函数";
}
pointer(int a) {
if (a!=0) {
p = new int[a];
}
cout << "函数申请了一块空间"<<endl;
}
};
int main() {
pointer p;//编译器会帮助我们手动调用构造函数,无需手动调用
pointer p1(2);//调用有参数的构造函数 创建对象
pointer p2();//并不是括号调用,是被识别为函数创建,pointer 函数返回值类型 p2函数名()参数
/*
构造函数的调用方式:
括号法
显示法
隐式法
*/
pointer t(1);//括号法
pointer t1 = pointer(2);//显示法
pointer t2 = 3;//隐式法
pointer t4;//调用无参数类型的函数
return 0;
}
二、析构函数
释放堆区内存使用
在对象释放的时候自动调用析构函数
名字和类名相同前面加~(~perion)
没有返回值不写void
没有参数不能重载
没有析构函数的时候编译器自动生成
在对象被释放时自动调用
using namespace std;
class perion {
public:
int n;
int* p;
perion(int n) {
this->n = n;
if (n>0) {
p = new int [n];
}
}
~perion() {
if (p) {
delete[]p;
}
}
};
int main() {
return 0;
}