栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++--构造函数-析构函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++--构造函数-析构函数

20.构造函数是在我们定义一种类型的变量时会自动被调用的函数。而且我们可以定义多个同名的构造函数--函数重载(参数不一样或者没有参数)。

#include 
using namespace std;
//构造函数:函数名和类名一样,而且没有返回函数
struct Date {
  int d,m,y;

//如果没有定义任何构造函数,那么编译器会自动生成一种构造函数
  Date(){
    d=1; m=1; y=2000;
    cout<<"default constructor!"< 

注意:如果没有定义任何构造函数,那么编译器会自动生成一种构造函数。

21.在构造函数中剩下的内存没有释放掉,在销毁的时候需要把占用的内存释放掉就要用到析构函数。

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
using namespace std;
struct student {
  char *name;
  int age;
    student(char *n= "no_name", int a = 15){
      int len = strlen(n);
      name = new char[len+1]; //name指针没有指向任何一块内存,所以需要分配一块内存  
                              //还有结束字符,需要len+1
      strcpy(name,n);
      age = a;
      std::cout << "constructor!" << std::endl;

    }

  virtual ~student() {
    
    std::cout << "destructor!"  

注意1:delete[] name;是为了防止内存泄漏。

注意2:一般初始化对象的时候是在构造函数里进行,当对象销毁的时候要把内存还给操作系统。

注意3:构造函数需要提供参数,要用参数来进行构造申请资源,析构函数不需要提供参数。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/847157.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号