类和对象
类的概念
我们前面了解过C语言是一门面向过程的编程语言,而C++是一门面向对象的编程语言,
这个“面向对象”其实就体现在类和对象上,我们画上一幅图可以清楚认识一下:
C++的三大特性:封装、继承、多态
继承和多态我们放在后面进行了解,这里主要搞清楚什么是封装:
- 封装是面向对象程序设计的基础特征。它是将数据(属性)与函数(方法)进行合并成一个整体,也就是我们上面所说的类。(把属性和方法进行封装)
- 将客观事物封装成抽象的类,类可以将自己的属性与方法对指定的用户开放,对其他用户进行隐藏。(对属性和方法进行访问权限控制)
这里我们提到了访问权限控制,就不得不说一下类的三种成员访问限定符:
- public: 任意位置都可以访问
- protected: 只有子类和本类类中允许访问
- private: 只允许本类类中访问
另外还需要了解一些:
class和struct的区别: - c语言中使用struct定义结构体
- 在c++中使用struct或者class定义类
- c语言中struct里面不能定义成员方法和访问权限
- c++中struct可以定义成员方法和访问权限
- c++中struct默认访问权限为public,而class的默认访问权限是private
- c语言中struct最小内存可以为0,c++中最小是1
- c++中class可以用来写模板,但是struct不可以
this指针:
指向源对象自身的指针
在非静态成员方法的形参列表第一个位置,默认加上this指针,编译期间生成指令时候加上的
在调用的非静态成员方法的实参列表第一个位置,默认加上this指针,编译期间生成指令时候加上的
在非静态成员方法体内,使用到非静态成员的地方,默认加上this->,编译期间生成指令时候加上的
成员方法内无法改变this指针的指向,所以参数中的是
SUB * const this
面向对象中的static
static方法
没有像普通成员方法一样传递this指针
static成员方法中不可以使用非静态的成员
不依赖对象,可以直接使用类的作用域进行访问
static成员变量
一个类中只有一份
必须在类外进行初始化
访问不依赖于对象,可以直接使用类的作用域进行访问