C++的6个缺省函数

一.在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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中,我们可以使用缺省构造函数来创建一个对象数组。 缺省构造函数是指在定义类时没有显式定义任何构造函数的情况下,默认生成的构造函数。它不带任何参数,并且没有函数体,其作用是为对象提供默认的初始化。 如果我们将一个类定义为数组的元素类型,可以使用缺省构造函数来创建一个对象数组。例如,假设我们有一个名为Person的类,没有任何构造函数的定义。我们可以通过以下方式创建一个Person对象数组: Person arr[5]; 上述代码将创建一个名为arr的Person对象数组,数组中包含了5个Person对象。由于缺省构造函数的存在,每个元素都会被默认初始化为该类的默认值。具体的初始化规则取决于成员变量的类型和定义。如果在Person类中定义了成员变量的默认值,那么每个元素都将被初始化为这些默认值。 如果我们想要自定义初始化每个元素,可以通过重载构造函数的方式来实现。这样,在创建对象数组时,我们也可以传递参数来初始化每个元素。例如,如果我们想要将数组中的每个Person对象的年龄初始化为25岁,可以定义一个带有参数的构造函数,并使用如下方式创建数组: Person arr[5] = { Person(25), Person(25), Person(25), Person(25), Person(25) }; 上述代码将创建一个Person对象数组,其中每个元素的年龄被初始化为25岁。 总结起来,通过使用缺省构造函数,我们可以方便地创建对象数组,并根据需要进行默认初始化或自定义初始化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值