C++ 构造函数&析构函数

构造函数:

        格式:类名(){}

        作用:进行初始化;

1.可以传递参数,因此可以发生函数重载

2.构造函数分为三类:无参构造(默认构造) 有参构造 函数拷贝构造

3.调用时机,当构建一个类时就会调用一次;

析构函数:

        格式:~类名(){}

        作用:用于删除存储;

1.不可以传递参数

2.当构建的类需要被释放时,就会调用此函数;

在程序员自身没有编译构造函数与析构函数时,编译器会自动编译一个空的构造函数和析构函数(即小括号与大括号中都为空);

可以这样理解:

        每人都有一部手机,手机买回来的时候,它会有一个自我的手机界面,有应用市场、设置等app,这些不需要我们进行任何操作的,就是构造函数的作用---初始化;

        而在我们需要买新手机的时候,我们的旧手机就直接丢了嘛?我们一般都是要先删除数据吧,而析构函数的作用就是将这些数据进行删除;

#include<iostream>
#include<string>
using namespace std;
class person {
public:
	//属性最好是赋予private权限,这里为了方便采用公共权限;
	int age;
	string age2;
	//构建函数
	person() {
		cout << "无参构建函数调用" << endl;//也是默认构建函数
	}
	person(int a_age) {
		age = a_age;
		cout << "有参构建函数调用" << endl;//参数为a_age
	}
	person(string a_age) {
		age2 = a_age;
		cout << "重载 有参 构建函数调用" << endl;//这里为了体现重载,增加了一个属性age2 定义为string型 避免有年龄为 "负" 的;
	}
	person(const person& p) {
		age = p.age;
		cout << "拷贝构造函数调用" << endl;//在参数传递处,不可使用person p; 传递进来一个类,我们根据此类进行构建初始化,不能够对传递进来的类进行修改,需要const进行修饰;
	}
	~person() {//所有我们定义的person类都将使用同一析构函数释放内存;
		cout << "析构函数调用" << endl;
	}
};
void test01() {
	person p1;
}
void test02() {
	person p2(10);
}
void test03() {
	person p3(10);
	person p4(p3);
}
void test04() {
	string a="10000";
	person p5(a);
}
int main() {
	test01();
	test02();
	test03();
	test04();
	return 0;
}

可以一个test一个test 的看,本文中使用的定义方法:括号法----person p2(10)

还有显示定义法 隐式定义法 可以自行查找资料;

注意:

若使用括号法,记得默认析构时 语法为:person p;

而不是person p();

若写成了person p(); 程序不会构建一个person类,而是会将它错当作成一个函数声明;

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值