参考链接
- https://www.bilibili.com/video/BV1et411b73Z?p=99
面向对象三大特征
三大特征为:封装、继承和多态
封装
封装的意义
- 将属性和行为作为一个整体,表现生活中的事物
- 将属性和行为加以权限控制
一些常见说法
- 类中的属性和行为,统一称为成员
- 属性可以叫成员属性或成员变量
- 行为可以叫成员函数或成员方法
访问权限
访问权限有三种:
- public 公共权限:类内可以访问,类外可以访问
- protected 保护权限:类内可以访问,类外不可用访问,儿子也可以访问父亲中的保护内容
- private 私有权限:类内可以访问,类外不可以访问,儿子不可用访问父亲的私有内容
struct和class区别
在C++中struct和class唯一的区别就在于默认的访问权限不同:
- struct默认权限为公共
- class默认权限为私有
成员属性私有化
- 将所有成员属性设置为私有,可以自己控制读写权限
- 对于写权限,我们可以检测数据的有效性
将一个类拆成两个文件
在头文件中写声明,在源文件中写实现。
如Circle类:
class Circle
{
public:
// 半径
void setR(int r)
{
m_R = r;
}
int getR()
{
return m_R;
}
// 圆心
void setCenter(Point center)
{
m_Center = center;
}
Point getCenter()
{
return m_Center;
}
private:
int m_R;
Point m_Center;
}
可以拆为头文件circle.h和源文件circle.cpp。在使用circle类时,只需要包含头文件即可,使代码更清晰。
circle.h
只做成员函数的声明,还有包含使用的其他类的头文件:
#pragma once
#include <iostream>
using namespace std;
#include "point.h"
class Circle
{
public:
// 半径
void setR(int r);
int getR();
// 圆心
void setCenter(Point center);
Point getCenter();
private:
int m_R;
Point m_Center;
}
circle.cpp
引用circle.h头文件,为成员函数加上作用域:
include “circle.h”
void Circle::setR(int r)
{
m_R = r;
}
int Circle::getR()
{
return m_R;
}
// 圆心
void Circle::setCenter(Point center)
{
m_Center = center;
}
Point Circle::getCenter()
{
return m_Center;
}