c++基础(类和对象中)(类的默认成员函数)

目录

一.构造函数(类似初始化)

1.概念

2.构造函数的特点

二.析构函数(类似 销毁对象/空间)

三.拷贝构造函数(类似复制粘贴的一种 初始化 )

1.概念:

2.拷贝构造的特点:

四.赋值运算符重载(类似重命名)


一.构造函数(类似初始化)


1.概念

1.构造函数 是对象实例化时,初始化对象

2.构造函数 自动调用的 特点 就完美的替代的了Init 函数



2.构造函数的特点

1. 函数名与类名相同。
2. 无返回值。(返回值啥都不需要给,也不需要写void,不要纠结,C++规定如此)
3. 对象实例化时系统会 自动调用 对应的构造函数。
4. 构造函数可以重载。(在第五章运算符重载)
5. 如果类中没有显式定义构造函数,则C++编译器会自动生成⼀个无参的默认构造函数,⼀旦用户显式定义编译器将不再生成。
6. 无参构造函数全缺省构造函数、我们不写构造时编译器默认生成的构造函数,都叫做默认构造函数。但是这三个函数有且只有⼀个存在,不能同时存在。
(注意:大多构造函数都要自己写,才符合自己写的预期!)

如果 我们没有 自己 设置构造函数 就会出现:开辟的空间过大的问题

1.正常构造函数(初始话化):

2.没有初始化(不写构造函数),让编译器自己初始化:


二.析构函数(类似 销毁对象/空间)

1. 析构函数名是在类名前加上字符 ~
2. 无参数无返回值。(这里跟构造类似,也不需要加void)
3. ⼀个类只能有⼀个析构函数。若未显式定义,系统会自动生成默认的析构函数
4. 对象生命周期结束时,系统会自动调用析构函数。
5. 跟构造函数类似,我们不写编译器自动生成的析构函数对内置类型成员不做处理,自定类型成员会调用他的析构函数。
6. 自定义类型成员无论什么情况都会自动调用析构函数

注意:(析构函数大多要自己写,如果不自己写,可能会出现内存泄漏等严重问题!!!)

 比如:销毁一个栈:


三.拷贝构造函数(类似复制粘贴的一种 初始化 )

1.概念:

        如果⼀个构造函数的第⼀个参数是自身类类型的引用,且任何额外的参数都有默认值,则此构造函数也叫做拷贝构造函数,也就是说拷贝构造是⼀个特殊的构造函数。

2.拷贝构造的特点:

1. 拷贝构造函数 是 构造函数的⼀个重载
2. 拷贝构造函数 的参数 第一个参数 必须类类型对象的引用使用传值方式 编译器 直接报错,因为语法逻辑上会引发无穷递归调用
3. C++规定 自定义类型对象进行拷贝 必须调用拷贝构造 ,所以这里自定义类型传值传参和传值返回都会调⽤拷贝构造完成。
4. 若未显式定义拷贝构造,编译器会生成自动生成拷贝构造函数。自动生成的拷贝造 对 内置类型成员变量会 完成值拷贝/浅拷贝(⼀个字节⼀个字节的拷贝)(可能会造成拷贝地址都相同),对自定义类型成员变量 会调用他自己的 自定义类型 的 拷贝构造

(注意:大多拷贝构造函数都要自己写,才符合自己写的预期!)因为跟构造函数类似

正常的拷贝构造:                                          不是 类对象的 引用&  就会报错           


四.赋值运算符重载(类似重命名)

1.运算符重载是具有特名字的函数,他的名字是由operator和后面要定义的运算符共同构成。和其他函数⼀样,它也具有其返回类型和参数列表以及函数体。
2.重载运算符函数的参数个数和该运算符作用的运算对象数量⼀样多。⼀元运算符有⼀个参数,⼆元运算符有两个参数,⼆元运算符的左侧运算对象传给第⼀个参数,右侧运算对象传给第⼆个参数。
3.如果⼀个重载运算符函数是成员函数,则它的第⼀个运算对象默认传给隐式的this指针,因此运算符重载作为成员函数时,参数⽐运算对象少⼀个。
4.运算符重载以后,其优先级和结合性与对应的内置类型运算符保持⼀致

  .*   ::   sizeof   ?:(三目操作符)   .(点) 注意以上5个运算符不能重载。(大家要记⼀下!!!)
5. 重载操作符至少有⼀个类类型参数,不能通过运算符重载改变内置类型对象的含义,如: int operator+ (int x, int y)

6.重载++运算符时,有前置++和后置++,运算符重载函数名都是operator++,无法法很好的区分。C++规定,后置++重载时,增加⼀个int形参,跟前置++构成函数重载,方便便区分。
7.重载<<和>>时,需要重载为全局函数,重载为全局函数把 ostream/istream 放到第⼀个形参位置就可以了,第⼆个形参位置当类类型对象

正常的运算符重载:

前置/后置++ (重载):


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值