由于C++知识实在匮乏,学习高博书中使用g2o代码的时候,遇到了类的继承和派生的问题,直接晕
使用g2o,首先定义了一个类(表示图的顶点),来表示模型的顶点,这是就是一个继承
class CurveFittingVertex: public g2o::BaseVertex<3,Eigen::Vetctor3d>
这里CurveFittingVertex继承自g2o::BaseVertex,<>说明这是一个模板类(这是后话,暂且不谈)
概念:
类的继承表示新的类从已有类得到已有的特性
类的派生表示由已有类产生新的类
已有类叫做基类或父类,新类叫做派生类或子类
派生类的功能:
吸收基类成员
改造基类成员(根据继承方式调整基类成员的访问,函数在子类中覆盖,以及虚函数在子类中的覆盖) //没有搞懂黄色阴影部分
添加新成员
派生类的声明:
class 派生类名:[继承方式] 基类名1,[继承方式 基类名2],…,[继承方式,基类名n]
{
派生类成员声明;
}; //这里如果只有一个基类,则为单继承,多个基类则为多重继承
继承方式:public,private,protected
它规定了如何访问从基类中继承的成员。省略继承方式则默认为private。继承方式指定了派生类成员以及类外对象对于从基类继承来的成员的访问权限。
注意:构造和析构函数无法继承
public : 基类的私有成员不可访问; 公有和保护成员被继承到派生类中,可以访问
private : 基类的私有成员不可访问; 公有和保护成员被继承到派生类中并作为派生类私有成员
protected : 基类的私有成员不可访问; 公有和保护成员被继承到派生类中并作为派生类的保护成员
派生类的构造函数和析构函数
1. 派生类中继承而来的成员,由基类的构造函数初始化
新增的成员,有派生类的构造函数初始化
2. 派生类构造函数语法
派生类名::派生类名(参数总表):基类名1(参数表1),基类名2(参数表2),...,基类名n(参数表n),内嵌子对象1(参数表1),内嵌子对象2(参数表2),...,内嵌子对象n(参数表n)
{
派生类新增成员的初始化语句;
}
未完,待续……