C++中的构造函数和析构函数

构造函数:

在类实例化对象时自动执行,对类中的数据进行初始化。构造函数可以从载,可以有多个,但是只能有一个缺省构造函数。

析构函数:

在撤销对象占用的内存之前,进行一些操作的函数。析构函数不能被重载,只能有一个。

调用构造函数和析构函数的顺序:

先构造的后析构,后构造的先折构。它相当于一个栈,先进后出。

#include<iostream>
#include<string>
using namespace std;
class Student{
	public:
		Student(string,string,string);
		~Student();
		void show();
	private:
		string num;
		string name;
		string sex;
};
Student::Student(string nu,string na,string s){
	num=nu;
	name=na;
	sex=s;
	cout<<name<<" is builded!"<<endl;
}
void Student::show(){
	cout<<num<<"\t"<<name<<"\t"<<sex<<endl;
}
Student::~Student(){
	cout<<name<<" is destoried!"<<endl;
}
int main(){
	Student s1("001","千手","男");
	s1.show();
	Student s2("007","纲手","女");
	s2.show();
	cout<<"nihao"<<endl;
	cout<<endl;
	cout<<"NIHAO"<<endl;
	return 0;
}

C++中的构造函数和析构函数

先构造的千手,结果后析构的千手;后构造的纲手,结果先折构的纲手。

特点:

在全局范围定义的对象和在函数中定义的静态(static)局部对象,只在main函数结束或者调用exit函数结束程序时,才调用析构函数。

如果是在函数中定义的对象,在建立对象时调用其构造函数,在函数调用结束、对象释放时先调用析构函数。

#include<iostream>
#include<string>
using namespace std;
class Student{
	public:
		Student(string,string);
		~Student();
		void show();
		string num;
		string name;
};
Student::Student(string nu,string na){
	num=nu;
	name=na;
	cout<<name<<" is builded!"<<endl<<endl;
}
void Student::show(){
	cout<<num<<"\t"<<name<<endl<<endl;
}
Student::~Student(){
	cout<<name<<" is destoried!"<<endl<<endl;
}
void fun(){
	cout<<"============调用fun函数============"<<endl<<endl; 
	Student s2("002","自动局部变量");//定义自动局部对象 
	s2.show();
	static Student s3("003","静态局部变量");//定义静态局部变量 
	s3.show();
	cout<<"===========fun函数调用结束=============="<<endl<<endl;
}
int main(){
	Student s1("001","全局变量");
	s1.show();
	fun();
	cout<<"\nthis is some content before the end\n";//这是一段位于main函数结束之前,函数调用之后的内容
	cout<<endl;
	return 0;
}

C++中的构造函数和析构函数

结果显示:

在函数内部定义的自动局部变量在fun函数调用结束以后就立即执行了析构函数;

而全局变量和静态局部变量是在main函数结束之前才执行了折构函数,并且遵循了先构造后析构,后构造先析构的原则。

原文链接: https://www.cnblogs.com/zhezh/p/3773523.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++中的构造函数和析构函数

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/102729

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月10日 上午6:47
下一篇 2023年2月10日 上午6:50

相关推荐