前言:
作为一名机械专业学生,在没有C++基础的情况下,直接网上的代码资源学习ROS收获不大。虽然老师们并不要求我们会写相关代码,但能看懂代码段的含义是非常必要的,因此在正式开始ROS学习应用前需要对C++有基本概念。
一、C++介绍:
1.面向过程程序设计的缺点:
(1)可读性不佳:在面向过程的程序设计中,函数及其所操作的数据结构没有直观的联系,导致随着程序规模的增加可读性下降。
(2)扩展性差:面向过程程序设计没有“封装”和“隐藏”的概念,要访问某个数据结构中的某个变量可以直接访问,但要修改该变量时需要将所有访问该变量的语句都找出来修改,且难以差错和重用代码。
2.C++的特点:
C++是C语言的继承,既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。
二、类和对象:
1.介绍类和对象:
(1)面向对象编程:
面向对象是相对于面向过程来讲的,面向对象思想是把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模。
面向对象有三大特性:封装、继承和多态。
C++中的类是实现面向对象编程的核心要素。
(2)类的介绍:
类是根据客观事物抽象而成,形成一类事物;然后用类去定义对象,形成这类事物的具体个体;类把属性和方法进行封装,同时对类的属性和方法进行访问控制。
下面举例圆类说明:
1)代码段:
//要使用C++输入输出工具,要提供这两行代码
#include<iostream> //包含输入输出函数的头文件
using namespace std; //释放std命名空间中的变量名,函数名以及类型名
//声明常量PI=3.14
const double PI=3.14;
class Circle
{
public: //访问权限:公共的权限
//属性
double R;//半径
//方法
//获取圆的周长
double cal_zc()
{
return 2*PI*R;
}
//获取圆的面积
double cal_mj()
{
return PI*R*R;
}
};
int main()
{
//创建对象
Circle c; //声明类的对象
c.R=10; //创建对象
cout<<"半径为:"<<c.R<<endl; //访问公共成员属性半径并显示
cout<<"周长为:"<<c.cal_zc()<<endl; //计算周长和面积并显示
cout<<"面积为:"<<c.cal_mj()<<endl;
return 0;
}
2)结果:
3)解释代码:
①Circle是一个类,其中封装了一些方法:
一个属性:R
两个方法:cal_zc()和cal_mj(),分别计算圆的周长和面积
②public规定了类中的内容的访问权限。(访问权限有public,private和protected)
public:公有成员,可以在任何地