目录
理论知识
数据抽象:
封装:
细节知识
访问控制与封装
访问控制
STL使用封装
理论知识
类的基本思想是数据抽象、和封装。
数据抽象:
是一种依赖接口和实现分离的一种编程技术:
接口:包括用户所能执行的操作。
实现:包括类的数据成员,负责外界的接口函数,以及接口函数所需要的类私有函数。
封装:
封装实现了类的接口与实现的分离。封装后的类隐藏了实现细节,也就是说,使用类的用户只能使用接口,而无法访问接口实现细节,对类做了一个很好的保护。
细节知识
访问控制与封装
我们希望我们的类的数据不被随意的修改,那么我们需要对数据进行一种访问控制,保护类数据在类域外无法被随意修改。
访问控制
首先我们先:class关键字声明的类,默认内部数据与成员函数为私有访问,类内的一切都无法被外界使用访问。而struct关键字声明的类,默认内部数据与成员函数为共有访问,在任何地方都可以随意访问修改。
public:公有访问 private:私有访问 protected:保护访问
公有访问:下的数据以及函数可以被外界任何地方访问
私有访问:下的数据以及函数不可以被外界任何地方访问
保护访问:下的数据以及函数不可以被访问,但是在派生类中可以被访问。
STL使用封装
STL就是对类封装的体现,尤其是适配器,对封装做了更好的使用,使用其他的类作为自己的自变量成员,只取访问自变量成员的接口,不去关心他的底层实现逻辑。
//自己实现的stack适配器
namespace zjy
{
template <class T, class Continer = std::vector<T>>
class stack
{
public:
void push(const T& x)
{
_con.push_back(x);
}
void pop()
{
_con.pop_back();
}
const T& top()const
{
return _con.pop_back();
}
T& top()
{
return _con.back();
}
bool empty()
{
return _con.empty();
}
size_t size()
{
return _con.size();
}
private:
Continer _con;
};
}