C++的6个缺省函数

文章详细介绍了C++中类的六个默认成员函数:构造函数、拷贝构造函数、析构函数、赋值运算符、取址运算符以及this指针的作用和特性。特别强调了空类不会生成默认成员函数,以及自定义拷贝构造函数为何需要引用传递。
摘要由CSDN通过智能技术生成

一.在C++中默认产生6个类成员函数,即缺省函数,它们分别是:

1.缺省构造函数
2.缺省拷贝构造函数
3.缺省析构函数
4.缺省赋值运算符
5.缺省取址运算符
6.缺省取地址运算符

二,const对于空类,编译器不会生成任何的成员函数,只会生成1个字节的占位符。

有时可能会以为编译器会为空类生成默认构造函数等,事实上是不会的,编译器只会在需要的时候生成6个成员函数:一个缺省的构造函数、一个拷贝构造函数、一个析构函数、一个赋值运算符、一对取址运算符和一个this指针。

1.构造函数定义及调用

1) c++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的函数叫做析构函数;
2) 构造函数在定义时可以有参数;
3) 没有任何返回类型的声明

2.缺省拷贝构造函数

拷贝构造函数的目的就是完成对一个对象的拷贝,一般在一下三种场景下会调用该对象的拷贝构造函数:
1)函数返回类型是类的对象时
2)函数的参数是类的对象,调用该函数时会调用该类的拷贝构造函数
3)使用一个对象去初始化类的另一个对象时 F a = new F(1,2); F b = a; / F b(a) 注意必须要在类的初始化中使用,不是类的赋值注:为什么自定义拷贝构造函数必须是引用传递(&)而不能是值传递?因为防止无限递归,因为如果是值传递则会再一次调用拷贝构造函数

3.析构函数的定义及调用

    c++中的类可以定义一个特殊的成员函数清理对象,这个特殊的成员函数叫做析构函数 2) 析构函数没有参数也没有任何返回类型的声明
    析构函数在对象销毁时自动被调用

4.缺省赋值运算符

运算符重载函数名字为:关键字operator后面接需要重载的运算符符号。函数原型:返回值类型operator操作符(参数列表)赋值运算符主要有四点:
1)参数类型
2)返回值
3)检测是否自己给自己赋值
4)返回*this
5)一个类如果没有显式定义赋值运算符重载,编译器也会生成一个,完成对象按照字节序的值拷贝。

5.缺省取址运算符

取地址成员函数,分为两种,普通取地址操作符、const取地址操作符。取地址是什么意思呢?就是返回当前对象的地址,对于成员函数来讲,this指针就是它的地址,需要返回指针。

6.this指针有哪些特性呢

1)this是一个指针,它时时刻刻指向你这个实例本身。
2)this指针的类型 类类型 *const
3)this指针并不是对子昂本身的一部分,不影响sizeof的结果
4)this指针的作用域在类成员函数的内部
5)只有在类的非静态成员函数中才可以使用,其它任何函数都不可以
————————————————
版权声明:本文为CSDN博主「懒羊羊z」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_55660421/article/details/119388034

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值