c++学习总结
1、
c++声明类的关键字是class、struct、union,多数用class.
例如:
class A{
?????? pulic:
??????? .......
?????? private:
?????? ........
????? protected:
?????? .......
};
?
c++声明派生类的定义如下:
?class <派生类名>:<派生方式><基类名>
??? {
????? 派生类成员声明;
??? };
?
其中:
?⑴ 继承方式关键字为private、public和protected,分别表示私有继承、公有继承和保护继承。缺省的继承方式是私有继承。继承方式规定了派生类成员和类外对象访问基类成员的权限.
?⑵ 派生类成员是指除了从基类继承来的成员外,新增加的数据成员和成员函数。正是通过在派生类中新增加成员来添加新的属性和功能,来实现代码的复用和功能的扩充的。
class B:A{
?????? pulic:
??????? .......
?????? private:
?????? ........
????? protected:
?????? .......
};
如果B中重写了A 中的c方法,使用A的指针调用c方法,执行的是A的c方法。使用B的指针调用c方法,执行的是B的c方法。
如果A中声明的c方法是虚函数,且B中重写了A中的c方法,则无论使用A的还是B的指针都是调用派生类B的c方法。调用虚函数,默认调用派生类的虚函数实现。
2、
虚函数声明如下:
virtual ReturnType FunctionName(Parameter);
虚函数必须实现,如果不实现,编译器将报错。
纯虚函数声明如下:
virtual ReturnType FunctionName(Parameter)=0;
纯虚函数是抽象的,没有方法体实现。纯虚函数一定没有定义,纯虚函数用来规范派生类的行为,即接口。
3、
包含纯虚函数的类是抽象类,抽象类不能定义实例,但可以声明指向实现该抽象类的具体类的指针或引用。
????? c++接口的声明也是用class关键字,但声明中只有纯虚函数。
???? 有时候,我们得提供一些接口给别人使用。接口的作用,就是提供一个与其他系统交互的方法。其他系统无需了解你内部细节,并且也无法了解内部细节,只能通过你提供给外部的接口来与你进行通信。根据c++的特点,我们可以采用纯虚函数的方式来实现。这样做的好处是能够实现封装和多态。现举一实例,供大家参考。(不想做过多说明,大家一看就应该能够明白)
Class IPerson
{
public:
?? IPerson(){};
?? virtual ~IPerson()=0;//注意,最好要定义此虚析构函数,能够避免其实现不能正常调用析构函数的问题
?? //提供给外面使用的接口一般采用纯虚函数
?? virtual? void SetName(const string &strName)= 0;
?? virtual? const string GetName()= 0;
?? virtual? void Work()= 0;
}? 有时候,我们得提供一些接口给别人使用。接口的作用,就是提供一个与其他系统交互的方法。其他系统无需了解你内部细节,并且也无法了解内部细节,只能通过你提供给外部的接口来与你进行通信。根据c++的特点,我们可以采用纯虚函数的方式来实现。这样做的好处是能够实现封装和多态。现举一实例,供大家参考。(不想做过多说明,大家一看就应该能够明白)
Class IPerson
{
public:
?? IPerson(){};
?? virtual ~IPerson()=0;//注意,最好要定义此虚析构函数,能够避免其实现不能正常调用析构函数的问题
?? //提供给外面使用的接口一般采用纯虚函数
?? virtual? void SetName(const string &strName)= 0;
?? virtual? const string GetName()= 0;
?? virtual? void Work()= 0;
}
继承接口的类,必须实现接口的方法。