构造析构函数

目录

概述

构造函数

1.默认构造函数

2.构造函数的定义

3.构造函数的分类及调用

4.拷贝构造函数 

析构函数

1.默认析构函数

2.定义析构函数


概述

对象的初始化和清理是两个非常重要的安全问题,一个对象或者变量没有初始状态,对其使用后果未知,同样的,使用完一个对象或变量,没有及时清理,也会造成一定的安全问题

C++利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。对象的初始化和清理工作是编译器强制要求我们做的事情,因此如果我们不提供构造和析构,编译器会提供。

  • 构造函数:主要用于在创建对象的成员属性赋值,构造函数由编译器自动调用,无需手动调用。
  • 析构函数:主要作用于对象销毁前系统自动调用,执行一些清理工作。

构造函数

C++类中包含成为构造函数的特殊成员函数,他可以在调用对象时被自动调用进行对象的初始化。对象的初始化和赋值是不同的操作,C++编译器为每个类提供默认的初始化和赋值操作,用户也可以在C++类中定义自己的初始化和赋值操作。

1.默认构造函数

当用户没有一个类定义任何构造函数的情况下,C++编译器会自动为类建立一个不带参数的构造函数。默认构造函数不进行任何操作。

2.构造函数的定义

构造函数的名字应该与类名同名,并在定义构造函数时不能指定函数返回类型,即使void类型也不可以

构造函数语法   类名(){}

构造函数可以有参数,因此可以发生重载,程序在调用对象时候会自动调用构造,无须手动调用,且只会调用一次。

3.构造函数的分类及调用

分类:

按参数分为:有参构造和无参构造

按类型分为:普通构造和拷贝构造

	Person()
	{}

	Person(int a)
	{}

	Person(const Person& a)
	{}

三种调用方式:

1、括号法  2、显示法  3、隐式转换法

	//1.括号法
	Person p1;//默认构造函数
	Person p2(10);//有参构造函数
	Person p3(p2);//拷贝构造函数

调用无参构造函数时候,不要加(),编译器会认为是一个函数的声明。

	//2.显示法
	Person p2 = Person(10);//有参构造函数
	Person p2 = Person(p2);//拷贝构造
	//3.隐式转换法
	Person p4 = 10;//相当于 Person p4 = Person(10);

4.拷贝构造函数 

在有些时候我们需要一个对象创建另外一个对象,为实现该功能需要使用一种特殊的构造函数“复制/拷贝构造函数”。在通常情况下,编译器为每个类建立一个默认拷贝构造函数。

拷贝构造函数的参数是引用类自己的对象,即用一个已有的对象来建立新对象,使用引用是从函数的执行效率考虑的。为了不改变原对象,要用const修饰。

析构函数

在C++类中和构造函数相对应的特殊成员函数是析构函数。在对象被从内存中删除时析构函数会被自动调用。用户应使用析构函数释放对象生存过程中分配的资源如内存等。构造函数、拷贝函数和析构函数是类的基本成员函数

1.默认析构函数

当用户没有一个类定义任何析构函数的情况下,C++编译器会自动为类建立一个析构函数,默认析构函数不进行任何操作。

2.定义析构函数

为了与构造函数区分,析构函数在类名前面加上一个“~”,作为析构函数的名称。析构函数不但不能指定函数返回类型,也不能有函数参数,所以一个类只能有一个析构函数。

析构函数语法  ~类名(){}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值