目录
一.类的定义
1.1类的格式
1. class为定义类的关键字,类体中内容称为类的成员:类中的变量 称为类的属性 或 成员变量;
类中的函数 称为类的方法 或者 成员函数。
2. 为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前面或者后面加 _ 或者 m开头,比如:
3.C++中struct也可以定义类(C++兼容C中struct的用法)⼀般情况下还是推荐用class定义类。
(因为struct默认类里面全是public(也就是成员和函数全部公开)而class则全是private(全部成员和函数 不公开))( 1.2的第三点:有详细说明)
4. 定义在类面的成员函数默认为inline。
1.2 访问限定符
1. C++⼀种实现封装的方式,用类将对象的属性与方法结合在⼀块,让对象更加完善,通过访问权限选择性的将其接提供给外部的用户使用。
2. public修饰的成员在类外可以直接被访问;protected和private修饰的成员在类外不能直接被访
问。现在protected和private是⼀样的(我还没学到)。
3. class定义成员没有被访问限定符修饰时默认为private(私有),struct默认为public(公开)。
4. ⼀般成员变量都会被限制为private/protected,需要给别人使用的成员函数会放为public
1.3类域
1. 类定义了⼀个新的作用域,类的所有成员都在类的作用域中,在类体外定义成员时,需要使用 :: 作用域操作符指明成员属于哪个类域。
2. 声明和定义分离,需要指定类域
比如:在test.h头文件声明
在test. c 中定义,需要加上test::Print
2. 实例化
1. 类是对象进行⼀种抽象描述,是⼀个模型⼀样的东西,限定了类有哪些成员变量,这些成员变量只是声明,没有分配空间, 用类实例化出对象时,才会分配空间!!!
(也就是说有才会分配空间)
2.1 对象大小
1. 实例化对象后,才可以得到class的大小。
2. C++规定类实例化的对象也要符合内存对齐的规则。(也就是结构体内存对齐,我就不多说了)相对简单的 自定义类型:结构体-CSDN博客
为什么test2没有成员变量还要给1个字节呢?因为如果⼀个字节都不给,怎么表示对象存在过呢!所以这里给1字节,纯粹是为了占位标识对象存在。
3. this指针
1.类的成员函数中访问成员变量,本质都是通过this指针访问的,如Init函数中给_year赋值, this-
>_year = year;
2.C++规定 不能在实参和形参的位置显示的写this指针 ( 因为编译时编译器会自己处理 ),但是可以在函数体内显示使用this指针。
3.编译器编译后,类的成员函数默认都会在形参第⼀个位置,增加⼀个当前类类型的指针,叫做this指针。