第九章 C++类和对象(2)【静态成员、友元机制、重载】

对象初始化和清理

初始化列表

类对象作为类成员

先构造类成员,再构造自身;

先析构自身,再析构类成员

静态成员

静态成员变量

同一份内存

两种访问方式

访问权限【类外不可访问private】

静态成员函数

共享函数

只能访问静态成员变量

静态成员函数访问权限

C++对象模型和this指针

成员变量与成员函数内存占用

编译器会给每个空对象分配一字节空间【区分不同空对象的地址位置】

不是空的对象,不用额外花一个字节

静态成员不属于任何一个对象,不占对象内存

非静态成员函数不会占用内存空间【能区分不同对象的各函数】

静态成员函数不会占用内存空间

this指针

解决名称冲突

返回对象本身【*this】

【如果下面不是Person &而是Person,即返回值,那这个值就不是p2本身】

空指针访问成员函数

访问成员变量【this是空指针(m_age ==> this->m_age)】

const修饰成员函数

常函数

变量前加了mutable就可以修改该变量

常对象

友元

全局函数做友元

类做友元

【蓝框部分新知识点:类外写成员函数】

成员函数做友元

【Building类由于要事先将goodGay中的函数设置为friend,因此goodGay要在Building前定义】

【因为goodGay中有Building,因此Build声明在goodGay前】

【Building的构造函数定义要在goodGay的构造函数定义前(goodGay构造时会调用Build的构造),蓝框部分展示】

运算符重载

加\减号运算符(+\-)重载

成员函数重载

全局函数重载

函数重载

左移运算符(<<)重载

【cout属于ostream对象】

【链式传递】

友元权限设置【一般类中成员变量都是私有private】

递增\减运算符(++\--)重载

前置递增

错误示例【返回引用的类型,而不是返回值,是因为有++(++myint)的情况,这种情况下最左边的++是对一个值(如果返回的是值)++】

正确示例

后置递增

赋值运算符(=)重载

直接=都是浅拷贝

【即面对指针类型的变量,只能做到复制地址,不能单独创建一个内存空间】

【当指向的内存空间释放后,另一个变量将丢失了该数据(成了野指针)】

正确示例

关系运算符(==、!=、!、<、>)重载

函数调用运算符【()】重载

该方法使用起来类似于函数,因此也称为仿函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值