栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

slam中的C++

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

slam中的C++

高博slam第五讲 - 结构体, 运算符重载

读高博的slam代码,看到以下一段有点懵

// 代价函数的计算模型
struct CURVE_FITTING_COST
{
    CURVE_FITTING_COST ( double x, double y ) : _x ( x ), _y ( y ) {}
    // 残差的计算
    template 
    bool operator() (
        const T* const abc,     // 模型参数,有3维
        T* residual ) const     // 残差
    {
        residual[0] = T ( _y ) - ceres::exp ( abc[0]*T ( _x ) *T ( _x ) + abc[1]*T ( _x ) + abc[2] ); // y-exp(ax^2+bx+c)
        return true;
    }
    const double _x, _y;    // x,y数据
};

经查阅资料

  1. C++ 中结构体中也可以包含构造函数析构函数
  2. 类中成员变量默认为私有,而结构体中默认为公有

对于这行

// 是构造函数
CURVE_FITTING_COST ( double x, double y ) : _x ( x ), _y ( y ) {}
// 冒号后面跟的是赋值,这种写法是C++的特性。
A( int aa, int bb ):a(aa),b(bb){}
// 相当于
A( int aa, int bb ){
	a=aa;
	b=bb;
}

构造函数后加冒号 → 初始化表达式

  1. 初始化 const 成员
  2. 初始化引用成员
  3. 当调用基类的构造函数,而它拥有一组参数时
  4. 当调用成员类的构造函数,而它拥有一组参数时。

复习 : 定义变量并初始化有两种形式

  1. 赋值运算符赋值 int a=10;
  2. 括号赋值 int a(10);
    括号赋值只能在变量定义并初始化中,不能用在变量定义后再赋值

关于运算符重载, 引用这篇博客 blog.csdn.net/lishuzhai/article/details/50781753

  • 大多数运算符可以通过成员函数和非成员函数进行重载; 但是下面这四种运算符只能通过成员函数进行重载:

    = 赋值运算符,()函数调用运算符,[]下标运算符,-> 通过指针访问类成员的运算符。

  • 关于const blog.csdn.net/hjwang1/article/details/78541505

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/312285.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号