个人技术分享

C++类和对象2

6个默认成员函数:

构造:

概念:

名字和类名相同,创建类型对象时,由编译器自动调用,保证每个数据成员都有一个合适的初始值,并且在对象的生命周期内只调用一次。

特性:

一、函数名与类名相同

二、无返回值

三、对象实例化自动调用

四、支持函数重载(无参的构造、带一个参数的构造、带两个参数的构造.....)

五、无参的、全缺省的以及我们不写编译器自动生成的构造都称为默认构造(无需传参就能调用的构造函数就称为默认构造),默认构造只能有一个。

也就意味着自己实现了编译器就不会自动生成。

关于编译器生成的默认构造:

1、内置类型不处理

2、自定义类型会调用他的默认构造和默认析构

析构:

函数名是:~ + 类名

特性:

一、无参、无返回值

二、先构造后析构,对象是在函数内定义的,函数调用建立栈帧,栈帧中的对象构造和析构也要符合先进后出的原则

三、new出来的对象,如果不调用delete ,这个对象就不会自动调用析构函数,delete后对象才会调用类的析构函数(清空对象内部在堆区开辟的空间),和在堆区创建对象时开辟的空间

拷贝构造

只有单个形参,该参数是对本类型对象的const引用

特性:

一、拷贝构造是构造函数的重载

二、必须使用引用传参,如果使用传值传参,就会引发无穷递归调用

三、编译器生成的默认拷贝构造:

1、自定义类型调用他的拷贝构造

2、内置类型值拷贝

3、不能完成深拷贝

拷贝赋值:

两个形参,一个是隐藏的this指针,第二个是本类型的对象

特性:

一、参数类型最好使用引用、并用const修饰

二、函数的返回值使用引用返回

三、不能给自己赋值

四、编辑器生成的默认拷贝赋值:

1、自定义类型调用它的拷贝赋值

2、内置类型值拷贝

移动构造和移动赋值:

右值  /  将亡值(后续详谈)

const修饰的成员函数

实际上const修饰的是this指针,在该函数内不能对this指向的对象进行修改