C++初阶学习第四弹——类与对象(中)——刨析类与对象的核心点
类与对象(上):C++初阶学习第三弹——类与对象(上)——初始类与对象-CSDN博客
前言:
在前面文章中,我们已经讲了类与对象的思想和类与对象的一些基本操作,接下来这篇文章我们将讲解以下类与对象的六个默认成员函数(注意:这部分是类与对象的核心之一,理解这些默认成员函数才有助于我们更好的使用这些默认成员函数)
上一章内容:
目录
一、默认成员函数是什么?
二、默认成员函数有哪些?
三、六种默认成员函数
1、构造函数
1.1 构造函数的作用
1.2 构造函数的用法
1.3 默认构造函数
2、析构函数
2.1 析构函数的作用
2.2 析构函数的用法
2.3 默认析构函数
3、拷贝构造函数
3.1 拷贝构造函数的作用
3.2 拷贝构造函数的用法
3.3 默认拷贝构造函数
一、默认成员函数是什么?
在一个类中,我们一般称呼里面的变量等统统为成员,自然函数称为成员函数,变量称为成员变量
class A { public: int Add(int x,int y) //成员函数 { return x + y; } private: int a; //成员变量 };
而默认成员函数就是不用写,编译器会自动生成的函数,比如上面写的Add函数如果为默认生成函数,那么我们可以不进行声明定义,直接调用该函数,具体操作我们可以往下看
二、默认成员函数有哪些?
在解答这个问题之前,我们首先先来考虑,为什么语法上会创建这种默认成员函数,其实就是因为人的惰性,如果一个函数每个类都需要调用或者有可能调用到,那我们为什么不可以通过底层的一些操作,让每个类中都自动生成这些成员函数,这就是默认成员函数
通过上面我们应该明白,默认成员函数一定是所有类中都需要的,那主要有哪些呢?
主要有以下六种:
三、六种默认成员函数
1、构造函数
1.1 构造函数的作用
构造函数是用来初始化的,初始化对于每个类对象都是不可或缺的
比如Date类:
class Date { public: void Init(int year, int month, int day) { _year = year; _month = month; _day = day; } private: int _year; int _month; int _day; }; int main() { Date a1; a1.Init(2023, 2, 4); Date a2; a2.Init(2024, 2, 4); return 0; }
当我们创建Date类的成员时,比如例子中创建的a1、a2,在创建后我们需要对其初始化,但是每一个类成员我们都需要调用Init函数,这样就会显得十分麻烦,我们是否可以通过某种操作直接在创建类变量的同时进行初始化,这就是构造函数诞生的原因
1.2 构造函数的用法
注意事项:
1、首先,我们要知道构造函数其实就是特殊的成员函数,它还是封装在类中的
2、因为我们要实现在创建类变量的同时进行初始化,所以构造函数的名字与类名相同
3、构造函数可以是半缺省或者全缺省的
4、一个类中只能有一个构造函数,一旦自己写了编译器就不会生成默认构造函数
构造函数的形式如下:
class Date { public: Date(int year, int month, int day) { _year = year; _month = month; _year = year; } void Print() { cout