今天图老师小编要跟大家分享c++面向对象的编程入门篇--类构造函数与析构函数,精心挑选的过程简单易学,喜欢的朋友一起来学习吧!
【 tulaoshi.com - 编程语言 】
请注重,这一节内容是c++的重点,要非凡注重!
  //程序作者:管宁 
  //站点:www.cndev-lab.com 
  //所有稿件均有版权,如要转载,请务必闻名出处和作者 
  
  #include iostream 
  using namespace std; 
  class Student 
  { 
  public: 
  Student()//无参数构造函数 
  { 
  number = 1; 
  score = 100; 
  } 
  void show(); 
  
  protected: 
  int number; 
  int score; 
  
  }; 
  
  void Student::show() 
  { 
  coutnumberendlscoreendl; 
  } 
  
  void main() 
  { 
  Student a; 
  a.show(); 
  cin.get(); 
  } 
   更多内容请看C/C++技术学堂专题,或 构造函数可以带任意多个的形式参数,这一点和普通函数的特性是一样的!
 更多内容请看C/C++技术学堂专题,或 构造函数可以带任意多个的形式参数,这一点和普通函数的特性是一样的! 
  //程序作者:管宁 
  //站点:www.cndev-lab.com 
  //所有稿件均有版权,如要转载,请务必闻名出处和作者 
  
  #include iostream 
  using namespace std; 
  class Teacher 
  { 
  public: 
  Teacher(char *input_name)//有参数的构造函数 
  { 
  name=new char[10]; 
  //name=input_name;//这样赋值是错误的 
  strcpy(name,input_name); 
  } 
  void show(); 
  
  protected: 
  char *name; 
  
  }; 
  
  void Teacher::show() 
  { 
  coutnameendl; 
  } 
  
  void main() 
  { 
  //Teacher a;//这里是错误的,因为没有无参数的构造函数 
  Teacher a("test"); 
  a.show(); 
  cin.get(); 
  } 
  
  //程序作者:管宁 
  //站点:www.cndev-lab.com 
  //所有稿件均有版权,如要转载,请务必闻名出处和作者 
  
  #include iostream 
  using namespace std; 
  class Teacher 
  { 
  public: 
  Teacher(char *input_name) 
  { 
  name=new char[10]; 
  //name=input_name;//这样赋值是错误的 
  strcpy(name,input_name); 
  } 
  Teacher()//无参数构造函数,进行函数重载 
  { 
  
  } 
  void show(); 
  
  protected: 
  char *name; 
  
  }; 
  
  void Teacher::show() 
  { 
  coutnameendl; 
  } 
  
  void main() 
  { 
  Teacher test; 
  Teacher a("test"); 
  a.show(); 
  cin.get(); 
  } 
   更多内容请看C/C++技术学堂专题,或 现在我们来说一下,一个类对象是另外一类的数据成员的情况,假如有点觉得饶人那么可以简单理解成:类成员的定义可以相互嵌套定义,一个类的成员可以用另一个类进行定义声明。
 更多内容请看C/C++技术学堂专题,或 现在我们来说一下,一个类对象是另外一类的数据成员的情况,假如有点觉得饶人那么可以简单理解成:类成员的定义可以相互嵌套定义,一个类的成员可以用另一个类进行定义声明。 
  //程序作者:管宁 
  //站点:www.cndev-lab.com 
  //所有稿件均有版权,如要转载,请务必闻名出处和作者 
  
  #include iostream 
  using namespace std; 
  class Teacher 
  { 
  public: 
  Teacher() 
  { 
  Director = new char[10]; 
  strcpy(director,"王大力"); 
  } 
  char *show(); 
  protected: 
  char *director; 
  }; 
  char *Teacher::show() 
  { 
  return director; 
  } 
  class Student 
  { 
  public: 
  Student() 
  { 
  number = 1; 
  score = 100; 
  } 
  void show(); 
  
  protected: 
  int number; 
  int score; 
  Teacher teacher;//这个类的成员teacher是用Teacher类进行创建并初始化的 
  
  }; 
  
  void Student::show() 
  { 
  coutteacher.show()endlnumberendlscoreendl; 
  } 
  
  void main() 
  { 
  Student a; 
  a.show(); 
  Student b[5]; 
  for(int i=0; isizeof(b)/sizeof(Student); i++) 
  { 
  b[i].show(); 
  } 
  cin.get(); 
  } 
   更多内容请看C/C++技术学堂专题,或 一个类可能需要在构造函数内动态分配资源,那么这些动态开辟的资源就需要在对象不复存在之前被销毁掉,那么c++类的析构函数就提供了这个方便。
 更多内容请看C/C++技术学堂专题,或 一个类可能需要在构造函数内动态分配资源,那么这些动态开辟的资源就需要在对象不复存在之前被销毁掉,那么c++类的析构函数就提供了这个方便。 
  //程序作者:管宁 
  //站点:www.cndev-lab.com 
  //所有稿件均有版权,如要转载,请务必闻名出处和作者 
  
  #include iostream 
  #include string 
  using namespace std; 
  class Teacher 
  { 
  public: 
  Teacher() 
  { 
  director = new char[10]; 
  strcpy(director,"王大力"); 
  //director = new string; 
  // *director="王大力";//string情况赋值 
  } 
  ~Teacher() 
  { 
  cout"释放堆区director内存空间1次"; 
  delete[] director; 
  cin.get(); 
  } 
  char *show(); 
  protected: 
  char *director; 
  //string *director; 
  }; 
  char *Teacher::show() 
  { 
  return director; 
  } 
  class Student 
  { 
  public: 
  Student() 
  { 
  number = 1; 
  score = 100; 
  } 
  void show(); 
  
  protected: 
  int number; 
  int score; 
  Teacher teacher; 
  
  }; 
  
  void Student::show() 
  { 
  coutteacher.show()endlnumberendlscoreendl; 
  } 
  void main() 
  { 
  Student a; 
  a.show(); 
  Student b[5]; 
  for(int i=0; isizeof(b)/sizeof(Student); i++) 
  { 
  b[i].show(); 
  } 
  cin.get(); 
  } 
   更多内容请看C/C++技术学堂专题,或 前面我们已经简单的说了类的构造函数和析构函数,我们知道一个类的成员可以是另外一个类的对象,构造函数答应带参数,那么我们可能会想到上面的程序我们可以在类中把Student类中的teacher成员用带参数的形式调用Student类的构造函数,不必要再在Teacher类中进行操作,
 更多内容请看C/C++技术学堂专题,或 前面我们已经简单的说了类的构造函数和析构函数,我们知道一个类的成员可以是另外一个类的对象,构造函数答应带参数,那么我们可能会想到上面的程序我们可以在类中把Student类中的teacher成员用带参数的形式调用Student类的构造函数,不必要再在Teacher类中进行操作,  
  //程序作者:管宁 
  //站点:www.cndev-lab.com 
  //所有稿件均有版权,如要转载,请务必闻名出处和作者 
  
  #include iostream 
  #include string 
  
     using namespace std; 
  class Teacher 
  { 
  public: 
  Teacher(char *temp) 
  { 
  director = new char[10]; 
  strcpy(director,temp); 
  } 
  ~Teacher() 
  { 
  cout"释放堆区director内存空间1次"; 
  delete[] director; 
  cin.get(); 
  } 
  char *show(); 
  protected: 
  char *director; 
  }; 
  char *Teacher::show() 
  { 
  return director; 
  } 
  class Student 
  { 
  public: 
  Student() 
  { 
  number = 1; 
  score = 100; 
  } 
  void show(); 
  
  protected: 
  int number; 
  int score; 
  Teacher teacher("王大力");//错误,一个类的成员假如是另外一个类的对象的话,不能在类中使用带参数的构造函数进行初始化 
  
  }; 
  
  void Student::show() 
  { 
  coutteacher.show()endlnumberendlscoreendl; 
  } 
  void main() 
  { 
  Student a; 
  a.show(); 
  Student b[5]; 
  for(int i=0; isizeof(b)/sizeof(Student); i++) 
  { 
  b[i].show(); 
  } 
  cin.get(); 
  } 
   更多内容请看C/C++技术学堂专题,或 对于上面的那个"尴尬"问题,我们可以在构造函数头的后面加上:号并指定调用哪那个类成员的构造函数来解决!
 更多内容请看C/C++技术学堂专题,或 对于上面的那个"尴尬"问题,我们可以在构造函数头的后面加上:号并指定调用哪那个类成员的构造函数来解决! 
  //程序作者:管宁 
  //站点:www.cndev-lab.com 
  //所有稿件均有版权,如要转载,请务必闻名出处和作者 
  
  #include iostream 
  using namespace std; 
  class Teacher 
  { 
  public: 
  Teacher(char *temp) 
  { 
  director = new char[10]; 
  strcpy(director,temp); 
  } 
  ~Teacher() 
  { 
  cout"释放堆区director内存空间1次"; 
  delete[] director; 
  cin.get(); 
  } 
  char *show(); 
  protected: 
  char *director; 
  }; 
  char *Teacher::show() 
  { 
  return director; 
  } 
  class Student 
  { 
  public: 
  Student(char *temp):teacher(temp) 
  { 
  number = 1; 
  score = 100; 
  } 
  void show(); 
  
  protected: 
  int number; 
  int score; 
  Teacher teacher; 
  
  }; 
  
  void Student::show() 
  { 
  coutteacher.show()endlnumberendlscoreendl; 
  } 
  void main() 
  { 
  Student a("王大力"); 
  a.show(); 
  //Student b[5]("王大力"); //这里这么用是不对的,数组不能够使用带参数的构造函数,以后我们将具体介绍vector类型 
  // for(int i=0; isizeof(b)/sizeof(Student); i++) 
  //{ 
  // b[i].show(); 
  /
                        来源:http://www.tulaoshi.com/n/20160219/1618216.html
看过《c++面向对象的编程入门篇--类构造函数与析构函数》的人还看了以下文章 更多>>