C++有三大特性,分别是封装、继承、多态
封装:
字面意思就是包装的意思,专业术语来说就是信息隐藏。简单的来说就是一个类包装了一些数据以及操作这些数据的代码的逻辑实体。在一个类对象内部,某些操作或者数据可以是私有的,也可以是公有的。私有的是不能被外界锁访问的。通过这种方式,对类的内部成员提供了不同级别的保护,尽可能的去隐藏掉内部细节,只提供给对外的一些接口,用户无需知道对象内部细节,只通过接口来访问。
- 良好的封装可以减少耦合
- 可以对成员进行更精确的控制
class MyClass
{
public:
MyClass(); //构造函数
~MyClass(); //析构函数
int ret() { return number; }//对外提供的接口
private: //私有成员,外部无法访问
int number;
};
继承:
使用已经存在的类作为基础去建立一个新类,新类的定义可以增加新的功能,也可以用父类的功能,但是不能选择性的继承,可以解决代码的复用问题,可以提高效率。
- 子类可以拥有父类非私有的属性和方法
- 子类可以对父类进行扩展
- 子类可以重写父类的方法
class MyClass
{
public:
MyClass(); //构造函数
~MyClass(); //析构函数
int ret() { return number; }//对外提供的接口
bool IsZero(int v)
{
if (v == 0)
{
return TRUE;
}
else
{
return FALSE;
}
}
private: //私有成员,外部无法访问
int number;
};
MyClass::MyClass()
{
}
MyClass::~MyClass()
{
}
class SubMyClass : MyClass
{
public:
SubMyClass(int v);
~SubMyClass();
bool ret1()
{
return IsZero(num);
}
private:
int num;
};
SubMyClass::SubMyClass(int v)
{
num = v;
}
SubMyClass::~SubMyClass()
{
}
void _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
SubMyClass c(1);
bool v1 = c.ret1();
return;
}
多态:
多态是C++最重要的一个特性,好比就是一个接口,多个实现。
多态有静态、动态之分。
静态
通过函数重载、运算符重载来实现的。
同一个名字,根据传入的参数不同,调用同名的方法的不同操作,从而实现多态。
int add(int v1, int v2)
{
return 1;
}
int add(double v1, double v2)
{
return 2;
}
void _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int v1 = 1; int v2 = 2;
double v3 = 0.5; double v4 = 0.5;
int ret1 = add(v1, v2);
int ret2 = add(v3, v4);
return;
}
动态:
一个类实例的相同方法,在不同情况下的不同操作,通过动态绑定实现的。只有当运行的时候,才知最终调用的方法。
动态绑定就是通过虚指针和虚表来实现的。而且有两个条件:
- 基类指针指向子类对象。
- 调用虚函数(带有Virtual关键字的函数)