1.类的引入
struct的升级(在C++中,结构体内不仅可以定义成员变量,也可以定义成员函数。)
而且成员函数可以不传参,因为用的是当前结构体里面的变量,直接使用就好了
上面结构体的定义,在C++中更喜欢用class来代替。
2.类的定义
类体中的内容称为类的成员:类中的变量称为类的属性或成员变量 ;类中的函数称为类的方法或者成员函数。
类的两种定义方式
1. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。
2. 类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数名前需要加类名::
一般情况下,多采用第二种定义方式,感觉和普通函数的声明和定义分离很像。
C++中类的定义可以用struct与class,但是它们其实是有区别的,和访问限定符有关。
3.类的访问限定符
三种访问限定符
【访问限定符说明】
1. public修饰的成员在类外可以直接被访问
2. protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的)
3. 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止
4. 如果后面没有访问限定符,作用域就到 } 即类结束。
5. class的默认访问权限为private,struct为public(因为struct要兼容C)
struct类:因为struct定义的类,类里面的成员变量默认是public(公有的),所以在类域里面,即};之前,类的方法(成员函数)可以直接访问类的属性(成员变量。
class类 :当把上面的代码修改成class类,结果如下
因为class中的类的属性(成员变量)与类的方法 默认是private,不能直接访问。
解决方法:
将类的方法(成员函数)变成公有的,可以通过公有的成员函数去访问我们私有的(类的属性)成员变量。
通过上面的解释,我们可以了解到class定义的类不是随便就可以访问的,所以会更安全。
4.类的作用域
类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员时,需要使用 :: 作用域操作符指明成员属于哪个类域。