源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

深入解析C++中的构造函数和析构函数

  • 时间:2022-07-21 01:41 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:深入解析C++中的构造函数和析构函数
[b]构造函数: [/b]在类实例化对象时自动执行,对类中的数据进行初始化。构造函数可以从载,可以有多个,但是只能有一个缺省构造函数。 [b]析构函数: [/b]在撤销对象占用的内存之前,进行一些操作的函数。析构函数不能被重载,只能有一个。 [b]调用构造函数和析构函数的顺序: [/b]先构造的后析构,后构造的先折构。它相当于一个栈,先进后出。
[u]复制代码[/u] 代码如下:
#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; }
[img]http://files.jb51.net/file_images/article/201309/20130903080000.png[/img] 先构造的千手,结果后析构的千手;后构造的纲手,结果先折构的纲手。 [b]特点: [/b]在全局范围定义的对象和在函数中定义的静态(static)局部对象,只在main函数结束或者调用exit函数结束程序时,才调用析构函数。 如果是在函数中定义的对象,在建立对象时调用其构造函数,在函数调用结束、对象释放时先调用析构函数。
[u]复制代码[/u] 代码如下:
#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; }
[img]http://files.jb51.net/file_images/article/201309/20130903080209.png[/img]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部