游戏开发 c++基础学习 笔记摘要第19天

3 篇文章 0 订阅

也是很久都没有更新笔记了,今天来一更

友元

可以允许其他类或函数访问它的非公有成员,方法是令其他类或函数成为它的友元

friend 函数声明语句;

友元声明只能出现在类定义的内部
友元不是类的成员
一般来说,最好在类定义开始或结束之前的位置集中定义友元
输入输出重载只能作为友元函数
友元的声明仅仅指定了访问的权限
当我们希望类的用户能够调用某个友元函数,那么我们必须在友元声明外再专门对函数进行一次声明

类的内存

1.一个空类:1个字节
2.内存对齐
3.含有虚函数的类:加四个字节
类成员的赋值:
1.直接初始化,所有数据成员是公有的,且在没有声明任何构造函数的条件下
2.公有的成员赋值函数
3.构造函数初始化
(1)没有返回值(2)可以重载 (3)实例化对象时自动调用
4.成员初始化列表

封装的优点:
(1)确保用户的代码不会无意间破坏封装对象的状态
(2)被封装的类的具体实现细节可以随时改变,而无须调整用户级别的代码

成员函数和普通函数的区别
(1)定义不同,成员函数要加类的作用域
(2)调用不同,成员函数必须使用对象调用

this指针

无须用户定义,是一个指针常量
**1.在任何一个类成员函数的运行过程中,指针this总指向当前调用对象
2.this来表示当前调用对象
3.return this来返回当前调用者对象的指针
3.return this返回当前调用者

特点:
1.this是类的指针,指向类的对象
2.this是在类的对象被创建后,其成员函数(包括构造函数)被调用时,this就同时被说明和创建

拷贝构造函数

是一种特殊的构造函数

类名(const <类名>&<引用名>

调用的情况:()显示调用 =隐式调用
(1)当用类的一个对象去初始化另外一个对象时
(2)如果函数的形参是类的对象,调用函数时或者进行实参和形参结合
(3)如果函数的返回值是类的对象,函数调用完成返回时

系统默认的拷贝构造函数是浅拷贝(位拷贝)
当类中的数据成员有指针,且指向堆区的内存时,要重新写拷贝构造函数

this->p=ca.p;//浅拷贝
this->p= new int (*ca.p);//深拷贝

析构函数
(1)用来在对象的生存期结束做善后工作
(2)函数名一律为 ~<类名>
(3)析构函数没有函数返回值
(4)析构函数无参数
(5)一个类只能有一个析构函数,也可以缺省
(6)在对象生存期结束时,包括用delete函数释放动态对象时,系统自动调用析构函数

(7)若某个类定义中没有给出显示的析构函数,则系统会自动给出一个缺省的析构函数
(8)当类中的数据成员有指针时,我们也要重写析构函数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值