一、 面向对象编程介绍
1. 什么是面向对象?
面向将系统看成通过交互作用来完成特定功能的对象的集合。每个对象用自己的方法管理数据。也就是说只有对象内部的代码能操作对象内部的数据。
2. 面向对象的优点
活字印刷书即面向对象思想
通过,继承、封装、多态降低程序的耦合度,并结合设计模式让程序更容易复用和修改,并且易于扩展。
面向过程的缺点:不容易维护,灵活性差,不容易扩展,更谈不上复用,由于客户的需求多变,导致程序员加班加点,甚至整个项目经常返工。
3. 面向对象的特点
① 抽象—-作用是提高代码的灵活性
② 封装—-作用是提高代码的维护性
③ 继承—-作用是提高代码的复用性
④ 多态—-作用是提高代码的扩展性
二、 面向对象编程介绍
1. 类的声明
类是用户的自定义类型
格式:
class 类名
{
public:
公有成员(外部接口)
protected:
保护成员
private:
私有成员
};
2. 成员函数
在类内实现的成员函数(方法)都默认为内联函数。
在类外实现成员函数
Example:
void Test::init(int x,int y,int z){…}
3. class VS struct
class中默认成员为私有,类可以继承,类中可以加限定符。
struct中默认成员为公有,结构体不可以继承,结构体中可以加限定符。
4. 对象的存储模型
对象的大小与成员函数(方法)无关,只与属性有关,且遵循字对齐
每个对象的成员属性具有独立的空间,共享成员方法的空间。
调用成员方法时,通过this指针辨别是哪一个对象调用的。
this指针自动传参,作用是保存调用方法的对象的地址。在调用方法时自动生成,调用完自动释放,对象本身不含有this指针。
5. 类的作用域
要想在A类中使用B类有两种方法:在A.h中加
①#include <B.h>
②前向声明 class B;
注意:使用前向声明时,在A类中不能使用B的对象实体即前向声明的类不能实例化,只能使用B类指针或引用 。
6. 嵌套类(内部类)
嵌套类隐藏在外围类中,要使用内部类要加上外围类的限定。
Example:
Test外围类,Inner 内部类(int x 内部类公有成员)
要访问x:
Test t;
Test::Inner i;
t.i.x = 5;
内部类无权访问外围类的成员
嵌套类仅仅是语法上的嵌入,嵌套类的成员函数可以在类外实现。
7. 局部类
局部类定义在函数体内,局部类的成员函数必须在类体中实现,且局部类中不能出现静态成员。