使用类来定义自己的数据结构。
每一个对象都有自己的属性和自己的行为,把具有相同属性和行为的对象总和在一起,统称为一个类。
想在程序中使用这个类,必须调用头文件(类在该头文件中定义,头文件按照其中定义的类名来命名)
面向对象与面向过程编程思路的不同
面向过程:以C语言为例,编程思路为使用函数和某些给定类型的数据作为工具,来得到新的数据。这种思想的特点在于:任何数据可以被任意函数处理。在面对大型复杂程序时此种方式效率较低。
面向对象:以C++为例,将待处理的数据和函数封装在一起,A类型的数据只有A类型的函数可以处理,其他函数不能处理。被封装在一起的东西叫做类class,与C语言中的struct类似,但效果更丰富。使用这些类可以创造出各种对象,程序是对这些对象进行操作。
C++中类的不同
在C++中,类有不同类型。有的类中只有一个指针,比如string,他所指向的内容存放在别的位置。有的类含有的则是一个确切的值。
定义一个类
要包括访问权限、属性、行为。类名后不用加括号。
访问权限直接写一个public。
属性写法:数据类型 属性名;
行为:函数。在类内的行为函数中使用属性,直接使用其名称即可。如果是在类外使用,应加对象名.。返回时直接返回即可。
在编译器处理一个类的定义的时候,会首先处理完类中全部的成员声明,之后才会处理成员函数的定义,无论该成员函数定义在类内还是类外。这是因为成员函数一般都会使用类中出现的任意一个成员的名字,而如果同时处理声明和函数定义的话,则成员函数只能利用其中已被处理声明的成员。
成员的声明一旦被处理后,就相当于在整个程序内他都是可见的了。
类作用域
类自己本身就是一个作用域。定义在类中的成员属性就是该作用域下的数据。
编译器编译类
编译器在编译类的时候都是先编译成员属性的声明。
访问权限
Public,也叫公共权限。作用为保证属性和行为无论是在类内还是类外都可以访问。
Protected 保护权限。成员在类内可以访问,类外不能访问。子类可以使用父类的。
Private 私有权限。成员在类内可以访问,类外不能访问。
写法:
如果什么都不写,则默认权限是private。
成员属性私有化
一般将成员属性权限设置为private。这样可以由自己来控制读写的权限。并且对于写权限,我们可以通过成员函数(也即接口)检测数据的有效性。
将属性设置为private,在类外无法访问。因此一般会提供一个具有公共权限的成员函数,来对外提供一个访问私有属性的接口。
只写接口:没有return,有传入的参数
只读接口:没有传入的参数,有return
可读可写:有return,有传入的参数
定义某个类类型的对象(实例化)
类名A 对象名V;
对象是指能存储数据且属于某种数据类型的空间
此方法即定义了一个类型为A的对象V。类中规定了可以对对象V做哪些操作。
访问对象的属性
对象名.属性 = 。。。;
类内变量的初始化
由类自己决定其中的变量是否需要显式初始化。如果不需要,则由类自己提供默认初始值。如string类会给未显式初始化的字符串赋值未空串。