结合语义不变量的点线立体视觉SLAM系统_tartanair-程序员宅基地

技术标签: 人工智能  

作者:鱼骨  | 来源:3D视觉工坊

在公众号「3D视觉工坊」后台,回复「原论文」即可获取论文pdf。

添加微信:dddvisiona,备注:SLAM,拉你入群。文末附行业细分群。

摘要

传统的同步定位与制图(SLAM)系统使用环境的静态点作为实时定位和制图的特征。当可用的点特征很少时,系统很难实现。一个可行的解决方案是引入线特征。在包含丰富线段的复杂场景中,线段的描述差别不大,这可能导致线段数据的不正确关联,从而将误差引入系统并加剧系统的累积误差。针对这一问题,本文提出了一种结合语义不变量的点线立体视觉SLAM系统。该系统通过融合线特征和图像语义不变信息,提高了线特征匹配的准确性。在定义误差函数时,将语义不变量与重投影误差函数融合,并应用语义约束减少长期跟踪过程中姿态的累积误差。在TartanAir数据集和KITTI数据集的Office序列上的实验表明,该系统在一定程度上提高了直线特征的匹配精度,抑制了SLAM系统的累积误差,平均相对位姿误差(RPE)分别为1.38和0.0593米。

总结:

(1)提出了一种结合语义不变量的点线立体视觉SLAM系统

(2)将语义不变量与重投影误差函数融合定义误差函数,并应用语义约束减少长期跟踪过程中姿态的累积误差

(3)TartanAir数据集和KITTI数据集

引言

自工业4.0推出以来,机器人主导的智能制造产业已成为工业发展的支柱。视觉同步定位和映射(SLAM)系统是允许机器人探索未知环境、自我定位和构建地图的核心组件。视觉SLAM依靠廉价的轻型摄像机,可以有效地感知环境的外观,这使得仅依赖视觉传感器的SLAM系统成为机器人领域的热点问题。视觉SLAM系统的框架正在走向成熟。尽管视觉SLAM的研究领域已经取得了很大的进展,然而真实环境的可变性使得数据关联的准确性不可靠甚至无效。这导致系统的鲁棒性降低,难以满足实际需求。因此,如何提高数据关联的鲁棒性,对于减少视觉SLAM的累积误差,提高系统的整体鲁棒性具有重要意义。根据所采用的跟踪方法,将视觉SLAM系统分为直接跟踪和间接跟踪两种方法。基于直接跟踪的方法,如大尺度直接单目SLAM (LSD-SLAM)、直接稀疏里程计(DSO)和半直接单目视觉里程计(SVO),是基于最小化光度投影误差的姿态估计方法。这些方法对光照变换很敏感,对单个像素的区分很差。相比之下,基于间接跟踪的方法通过跟踪图像的点特征估计相机的姿态。代表性算法有并行跟踪与映射(PTAM)、ORB-SLAM2、RGBD SLAM-v2等。在强纹理场景中,点特征对光照不敏感,易于提取。然而,在低纹理环境或运动模糊的场景中,提取是困难的。影响系统的鲁棒性,严重时可能导致系统失效。在实际环境中,有大量的线特征具有与点特征相同的不变光照和视点特征,且易于提取。因此,可以克服低纹理场景造成的干扰,反映环境结构的完整信息。因此,涉及跟踪线特征的SLAM系统诞生了。线特征对遮挡很敏感,在缺乏纹理或高重复的区域不具有很强的识别能力,这导致匹配失败,比只依赖点特征的SLAM系统更不可靠的位姿求解。直线特征的跟踪非常耗时,不能满足SLAM系统的实时性要求。因此,点和线特征融合被应用到SLAM系统中。这里也推荐「3D视觉工坊」新课程《深度剖析面向机器人领域的3D激光SLAM技术原理、代码与实战》

为了减少累积误差的产生,现有的解决方案是通过在短期内建立多帧图像之间的约束,对位姿进行局部优化,减少轨迹漂移。当约束失败时,误差仍然会累积。另一种解决方案是采用闭环来建立一个长期约束来纠正累积误差,但这种解决方案严格依赖闭环检测。

近年来计算机图像技术的快速发展,如深度学习、目标检测、语义分割等,为机器人提高场景理解提供了更多的可能性。语义分割是一种像素级分类技术。图像中的每个像素被划分为相应的类别。在SLAM系统中应用语义分割来提高数据关联的鲁棒性是一个比较热门的研究课题。在SLAM系统中,随着时间的推移,相机的运动会导致视点、尺度和光照等特征的变化,但语义描述不会发生变化。比如在汽车上跟踪线段时,由于距离的变化,线段周围的像素发生了剧烈的变化,这导致跟踪失败。但是这条线段的语义描述属于汽车类,不受尺度和光照变化的影响。然后将线段的语义描述视为不变的,通过线段语义标签的一致性约束及其重投影特征建立线段的中期跟踪。

目前,线段相关的理论发展还不够成熟,主要表现在线段描述不够准确,这可能导致在包含许多线段的复杂场景中出现错误的数据关联。这就导致了在基于点-线特征的SLAM系统中引入线段后,线段的匹配精度较低,导致系统误差积累。

•本文提出了一种结合语义不变量的点和线特征的鲁棒立体SLAM系统。

•提出了一种改进的线段匹配方法。将语义分割的结果应用到线段匹配中,提高了线段的数据关联。

•定义线段的语义重投影误差函数,并将其应用于位姿优化过程,以提高数据关联的鲁棒性。实现了线段的中期跟踪,减少了轨迹漂移问题。

系统概述

本文以立体点线SLAM系统为基础,针对线段引入后,线段的不匹配直接影响数据关联的准确性,加剧了系统的累积误差的问题。提出了一种有效的改进方法。该方法使用语义不变量为线段匹配提供约束,减少了线段特征失配的产生。定义了线段的语义重投影误差函数,实现了线段的中期跟踪,有效地减少了轨迹漂移,提高了系统的鲁棒性。如下图所示为提出的系统的总体结构。该系统遵循ORB-SLAM2框架,整个SLAM任务按照可视化里程计、局部映射和闭环三个线程并行运行。

1279b21abf89a12112ae5ea1e3bdf22b.png

在本文中,语义分割的结果主要应用于视觉里程测量和局部姿态优化。如下图所示,系统接收到图像序列,然后进行点和线特征的提取和匹配。由于点特征的提取和匹配方法比线段更完备,语义分割结果只适用于线段的关联。在现有线段关联方法的基础上,利用语义分割的结果对线段进行语义分类。这提供了线段关联的语义不变约束,减少了不正确的数据关联。当获得点特征和线特征的关联结果时,将局部地图中的地标(点和线段)分别投影到当前帧及其对应的语义分割图像中。然后,通过最小化重投影误差项和重投影误差项的联合语义不变量来进行姿态优化。

7faa12b3d41eba3dfca40bc7657aaab5.png

方法

在本节中,我们首先介绍LSD算法提取线段的预处理细节,以及如何应用语义分割的结果约束线段的数据关联。然后描述了利用语义不变量建立点、线特征的中期数据关联后,如何进行位姿优化的问题。

1、线段的预处理与关联

线段提取采用LSD算法。LSD算法是一种局部直线检测算法,可以在不调整参数的情况下快速提取图像的局部直线轮廓。然而,由于遮挡或部分模糊等原因,线段被分割成几条直线。为了解决这一问题,本文采用[18]文献中的方法对折线段进行合并。折线段是否满足合并条件由端点之间的距离和线段之间的距离共同决定。删除合并后不符合长度阈值的线段。当预处理完成后,该方法对线段进行语义分类。线段是否属于语义范畴的判定原则如下:

(1)检测到的线段在类别区域的长度大于阈值d;

(2)如果检测到的线段位于多个语义类别的边界,则将其标记为概率最高的类别。

利用Detectron2对图像进行语义分割预测。预测由地面和非地面组成。然后,根据上述规则对线段进行分类。分类结果如图5所示。

2f0d7b52818ef636ad31e6917f0e5ce0.png

线段的数据关联应保证线段属于同一语义类,具有较高的相关性。线段的相关性由线段的局部外观描述确定,该描述由LBD描述符提供。

2、点和线重投影误差函数的语义不变量融合

在SLAM系统中,减少轨迹累积误差主要有两种方法。一是通过帧间数据关联优化姿态,减少轨迹漂移,这是一个短期约束。另一种方法依靠闭环检测进行位姿校正,在图像框架中建立长期约束。VSO利用图像的语义分割信息建立点对的中期数据关联。线段也具有语义不变性。因此,我们的方法利用这一性质来建立线段上的中期数据关联。图6给出了摄像机运动过程中点与线特征的数据关联过程。红线表示视觉里程计框架中基于外观的特性约束,绿线表示基于语义的约束。摄像头1和摄像头2可以建立基于外观的特征约束和基于语义的特征约束。在摄像机移动过程中,由于对特征外观的描述发生了剧烈的变化,在第k个摄像机中只能观察到特征的语义约束。与基于外观的约束相比,这种语义约束可以为特征数据关联提供更长期的约束,这被称为特征的中期跟踪。

9f9bc32b35385ad915680d59407f8e26.png

我们将语义不变量与重投影误差结合起来定义了一个误差函数:

9ff1452d9fd081db9eb17a4bdba097a9.png

其中Ebase是重投影误差,Esem是融合语义不变量的误差函数。通过最小化误差函数,实现了点特征和线特征的中期跟踪,减少了轨迹的漂移。

(1)Ebase的定义

基于点线特征的立体SLAM系统通常通过最小化重投影误差,给定输入115d03fdd385cf3499062bf57dfa71de.png,对应的位姿53d61f7744a55f692d0abde67fc5001b.png,三维点348a7adc518f9cf6cb86a143d2dcce61.png,三维线段cc77e43930c057b499b46e52d07c1872.png来实现局部姿态优化。重投影误差函数Ebase定义如下:

8bce1f593846c6532760f267a12707c2.png

其中Ep和EL分别表示点特征和线段的重投影误差,Ep是第i个三维点的观测值053d3586ad7c2c5d28f901d13a652dd1.png与其在第k个关键帧上的投影之间的距离为:

b7ae75c7376d47a87d8016dace7a1478.png

其中π(·)为三维点Pi的重投影坐标,k为摄像机的本征矩阵,Tk是相对运动矩阵。

由于遮挡或其他原因,线段的端点出现了不确定性。因此,线段的重投影误差函数不能简单地用观测线与其重投影之间的坐标距离来定义。更精确的方法是使用文献[19]中的方法,其中线段的重投影误差定义为投影线段的端点与被测直线之间的垂直距离之和。如图7所示,lo表示线段的观测值,lp表示三维线段的重投影,1bc3f326c30b39d291a542bf90f01956.png和表示直线重投影误差。因此,EL定义为:

db0d5e125e4a7f0a3aba2575b010fffa.png

eea301a74edda2ff20073b0e46b1eaf1.png

(2)Eseg的定义

融合语义不变量的误差函数描述了点和线特征在重投影后属于C类的概率。与VSO中阐述的现象一致,在摄像机运动过程中,由于周围的像素信息,特征会发生剧烈变化。因此,在数据关联中,特征的这一部分的约束就消失了。相比之下,特征的语义描述在尺度变化时保持不变。因此,将这种语义不变性应用到数据关联中,建立特征约束,延长特征的有效跟踪时间,减少累积误差的产生。

对于输入的52aa93df4193cb43a01351934ff90a6e.png,进行语义分割,对应的语义分割图像是8d4c849f3bdc3644a4ab60179a4bf98a.png。对于Is中的每一个像素有一个类别C。然后,对于投影到Isk的一个三维点Pi,投影坐标为µi,投影坐标有一个语义类别µi∈c,其中c是C的一个子类别。在VSO中定义了基于点特征的语义观测概率模型:

f38058fb179007ef871387cb5a9d87b7.png

其中31f660c2e42db4df62f1eea67dc27060.png表示从投影坐标µi到语义类别C最近边界的距离。σ描述语义类别C的不确定性,则点特征融合语义不变量上的误差函数可定义为:

bf02c508f9ead7103daf39096421d586.png

其中,1e9f2ccacaa7f6bdab8d76c14a52f854.png为类别概率向量,描述了Pi被一系列摄像机观测到的情况,并且类别属于C。这将导致:

28ab5dd7834064022842e4f930f3b5f6.png

其中α是用于保证1e23c14c63b1c027d7db52d33f4e46be.png的常数。

同样,对于一个三维线段Lj,它在Isk的投影也会使所投影的线段Lj具有一个语义类别j∈C。通过计算投影线段的两个端点以及线段中点到语义类C最近边界的距离来描述重投影线段属于语义类C的概率。可以确定线段中点离C最近边界的距离越小,线段属于C类的可能性越大。为了确保大多数线段属于C类,到语义区域最近边界距离最小的端点也应该被联合考虑。

b09cf0286be9eded8f71c351159d03d4.png

其中,dm和de分别表示从中点和端点到边界的距离。

因此,投影线段属于C类的概率用投影线段的中点和端点到C类边界的距离来描述。线段的语义似然模型定义如下:

59384e947e9a398172fd758d1fed1b49.png

线段融合语义不变量的误差可定义为:

e4afd1142d7cf1ac1f65864d93be0bfa.png

其中为类别概率向量,描述一系列摄像机观测到的线段Lj,类别属于C的情况:

f45a6e3cb865332b55086dbec932dc2b.png

联合语义不变量的误差函数定义如下:

09687afc0a79f562502c0162572039c8.png

实验

本节通过一系列的实验来验证本文提出的系统的有效性。利用彩色图像进行语义分割是十分必要的。因此,使用公开可用的TartanAir数据集和KITTI数据集执行验证,这两个数据集都提供了ground-truth的颜色序列。TartanAir数据集是一个室内场景数据集,KITTI数据集是一个室外场景数据集。我们将我们的方法与几种最先进的方法进行了比较,包括ORB-SLAM2和PL-SLAM。所有实验都是在一台CPU为Intel i5-4200U、内存为4GB、操作系统为Ubuntu 16.04的笔记本电脑上进行的。语义分割结果是使用Facebook AI Research推出的Detectron2算法得到的。实验结果表明:

(1)添加语义不变量后,线段之间的不匹配明显降低,线段匹配的准确率提高。这里也推荐「3D视觉工坊」新课程《深度剖析面向机器人领域的3D激光SLAM技术原理、代码与实战》

(2)在没有动态目标干扰的室内场景中,该方法能较好地抑制轨迹漂移

(3)将语义不变性的结果应用于户外场景的SLAM系统并不一定能有效地减少系统的轨迹漂移。产生这种结果的原因可能是室外场景的语义分割精度不够高,语义类别划分不够精细,以及受到动态对象的影响。

(4)我们的系统基本能够满足实时性的要求。

结论

本文提出了一种融合语义不变量的点线立体SLAM系统。为了提高线段数据关联的准确性,给出了线段的语义类别标签。通过联合语义不变量定义线段上的重投影误差函数,实现线段的中期跟踪,使系统在进行局部优化时获得更好的结果,减少了轨迹中累积误差的产生。在TartanAir数据集和KITTI数据集上验证了该方法的有效性。将实验结果与ORB-SLAM2和PL-SLAM系统进行了比较。结果表明,该算法能有效地提高系统的鲁棒性,减少大部分序列的轨迹漂移。但是,由于对语义分割信息进行了预处理,在系统中没有对原始图像进行直接的实时分割。因此,后续将考虑实时语义分割的应用,进一步提高系统的完整性。

—END—

高效学习3D视觉三部曲

第一步 加入行业交流群,保持技术的先进性

目前工坊已经建立了3D视觉方向多个社群,包括SLAM、工业3D视觉、自动驾驶方向,细分群包括:[工业方向]三维点云、结构光、机械臂、缺陷检测、三维测量、TOF、相机标定、综合群;[SLAM方向]多传感器融合、ORB-SLAM、激光SLAM、机器人导航、RTK|GPS|UWB等传感器交流群、SLAM综合讨论群;[自动驾驶方向]深度估计、Transformer、毫米波|激光雷达|视觉摄像头传感器讨论群、多传感器标定、自动驾驶综合群等。[三维重建方向]NeRF、colmap、OpenMVS等。除了这些,还有求职、硬件选型、视觉产品落地等交流群。大家可以添加小助理微信: dddvisiona,备注:加群+方向+学校|公司, 小助理会拉你入群。

af1f090d024669bdbb5da75c9bdd14e1.jpeg
添加小助理微信:cv3d007, 拉你入群
第二步 加入知识星球,问题及时得到解答

针对3D视觉领域的视频课程(三维重建、三维点云、结构光、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、源码分享、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答等进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业、项目对接为一体的铁杆粉丝聚集区,6000+星球成员为创造更好的AI世界共同进步,知识星球入口:「3D视觉从入门到精通」

学习3D视觉核心技术,扫描查看,3天内无条件退款9217263a5f31fb17c07c079b571752b4.jpeg

高质量教程资料、答疑解惑、助你高效解决问题
第三步 系统学习3D视觉,对模块知识体系,深刻理解并运行

如果大家对3D视觉某一个细分方向想系统学习[从理论、代码到实战],推荐3D视觉精品课程学习网址:www.3dcver.com

基础课程:

[1]面向三维视觉算法的C++重要模块精讲:从零基础入门到进阶

[2]面向三维视觉的Linux嵌入式系统教程[理论+代码+实战]

[3]如何学习相机模型与标定?(代码+实战)

[4]ROS2从入门到精通:理论与实战

[5]彻底理解dToF雷达系统设计[理论+代码+实战]

工业3D视觉方向课程:

[1](第二期)从零搭建一套结构光3D重建系统[理论+源码+实践]

[2]保姆级线结构光(单目&双目)三维重建系统教程

[3]机械臂抓取从入门到实战课程(理论+源码)

[4]三维点云处理:算法与实战汇总

[5]彻底搞懂基于Open3D的点云处理教程!

[6]3D视觉缺陷检测教程:理论与实战!

SLAM方向课程:

[1]深度剖析面向机器人领域的3D激光SLAM技术原理、代码与实战

[1]彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战

[2](第二期)彻底搞懂基于LOAM框架的3D激光SLAM:源码剖析到算法优化

[3]彻底搞懂视觉-惯性SLAM:VINS-Fusion原理精讲与源码剖析

[4]彻底剖析室内、室外激光SLAM关键算法和实战(cartographer+LOAM+LIO-SAM)

[5](第二期)ORB-SLAM3理论讲解与代码精析

视觉三维重建

[1]彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进)

自动驾驶方向课程:

[1] 深度剖析面向自动驾驶领域的车载传感器空间同步(标定)

[2] 国内首个面向自动驾驶目标检测领域的Transformer原理与实战课程

[3]单目深度估计方法:算法梳理与代码实现

[4]面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)

[5]如何将深度学习模型部署到实际工程中?(分类+检测+分割)

最后

1、3D视觉文章投稿作者招募

2、3D视觉课程(自动驾驶、SLAM和工业3D视觉)主讲老师招募

3、顶会论文分享与3D视觉传感器行业直播邀请

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Yong_Qi2015/article/details/132505713

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签