C++学习心得

C++学习心得
一周的C++学习结束了 从C++的简介,各种专业术语的介绍到最后的标准模板库,对于这个c的加强版的语言有了一定的认识理解,但是由于6天时间学完了全部,而且由于疫情在家里上了两天网课,对于一些运用层次还不是很熟悉,学的重点放在了面向对象。对于学到的内容,对重点进行了以下整理,太过简单的或者不重要的仅作了解,不做概述。
C++里的特性及专业术语
(1)类:class
描写现实世界中的事物(包括特征和行为),例如:人,特征:身高、年龄、性别、肤色,行为:吃饭、走路、睡觉等等,它实质是抽象的描述事物,它其实是不存在的。
(2)对象
对象是类的实例化,实实在在存在于现实世界中,特指的概念
(3)继承
相当于是一个新类共享了另一个或多个类的特征和行为,该新类和其他类的关系,称之为继承,例如:儿子 父亲 ----继承
(4)多态
多种形态,一种接口,多种方法,举例:你(8岁) 父亲 -----买票行为-----你买票(半票)—父亲(全票)
(5)封装
c语言里函数就是封装的概念,将数据和数据的操作封装在一起
(6)组合(聚合)
一个类中包含了另一个类的对象,就将类和另一个类的对象的关系,称之为组合关系
(7)静态联编(静态绑定)
一个数据的表达式的类型在编译的时候就已经确定了,称之为静态绑定
(8)动态绑定(动态联编)
一个数据的表达式的类型在运行的时候才确定,称之为动态绑定,典型:多态
(9)特征&属性
在C++特征&属性就是代表变量,如果变量存在于类中,那么称之为成员变量
(10)行为&方法
在C++行为&方法就是代表函数,如果函数存在于类中,那么称之为成员函数
4、C++的程序的编译
跟C编译过程类似

#include <iostream>
#include <cstdio>
//如果想要用到C库里的内容,需要包含C库的头文件,头文件的格式:头文件前面加上c,不需要写后缀.h
//#include 宏----后面紧跟的内容是库文件或者是用户自定义的头文件
//<>-----如果是使用<>符号来包含头文件或者是库文件,那么首先会去标准库里去找头文件
//“”-----如果是使用“”符号来包好头文件或者是库文件,那么它首先是去当前的工程路径去寻找相应的内容
//iostream----iostream是C++提供标准库里的文件,所以没有加后缀.h,如果这里是包含的用户自定义的头文件,那么就需要加上后缀.h
//iostream----原因:cout流对象(它是ostream类的实例化),它是在iostream里实例化
using namespace std;//使用标准库提供的命名空间std,cout/cerr/clog/cin/endl/ends等等它都是属于命名空间std里的内容
int main()//main函数程序执行的开始也是程序执行的结束
{
   
	printf("你好,世界");
	cout << "hello world" << endl;//打印hello world
	//cout输出流对象,可以用于输出相关信息,它是在头文件iostream里实例化
	//endl结束换行流对象,类似于C里“\r\n”
	//<<----相当于输出仪器
	//“hello world”——向控制台输出的内容
	return 0;//程序的结束标志
}

首先学习的命名空间

//如何进行声明
//关键字--------namespace
namespace 标识符的名称
{
   
	//代码块或者是语句块
}
//例如:
namespace  zhang
{
   
	int a;
}
//如何进行访问
//1命名空间的名称  ::需要访问的内容
namespace  zhang
{
   
	int a;
}
zhang ::a;
//2
namespace  zhang
{
   
	int a;
}
using  zhang::a;//如果后面用到a,那就表明是命名空间里的a

```//访问格式3:
//关键字:using、namespace
//格式:
//	using namespace 命名空间的名称;//告诉程序在该语句后用到命名空间里定义的变量、函数都是属于命名空间里的内容,相当于是可以访问命名空间里的所有的内容
//例如:
namespace  zhang
{
   
	int a=50int b=60;
}
using namespace zhang;
//无名(没有名字)的命名空间
//声明格式:
namespace     //表示声明的无名的命名空间
{
   
	//代码块或者语句块
}
//例如:
namespace
{
   
	int a;
}

//访问格式:
//符号:域作用符号------::
//格式:
	::需要访问的内容
//例如:
namespace
{
   
	int a;
}
::a;

注意的是:
(1)命名空间是可以发生嵌套
(2)命名空间可以分为有名的命名空间和无名的命名空间(实际开发中有名的名空间用的比较多)
(3)命名空间是属于全局的一部分,只不过是取了全局的一块区域命了一个名称而已
(4)访问命名空间的时候需要用到域作用符号
然后学习了开辟内存
动态内存
动态内存:程序在运行时才分配的空间,称之为动态内存,例如,在C语言里,可以用malloc和free两个函数,来动态的开辟堆区空间和释放堆区空间,C++提供了new和delete操作符来操作堆区的空间(动态的开辟空间)
new:用于开辟堆区空间,相当于是C里的malloc
delete:用于释放堆区空间,相当于是C里的free
1、开辟变量地址空间
操作符:new
格式:
数据类型(内置的基本的数据类型和自定义的数据类型) * 标识符名称 = new 数据类型 ;//在堆区开辟变量地址空间,用标识符名称来指向堆区空间,堆区空间的大小就是数据类型的大小
例如:

	int   * p  = new int//在堆区开辟int类型大小的空间,并且用p指向该空间
	//或
	int * p ;
	p =new int

释放变量地址空间:

delete p;

开辟变量地址空间的时候同时进行初始化工作:
格式:
数据类型(内置的基本的数据类型和自定义的数据类型) * 标识符名称 = new 数据类型(初始值) ;//在堆区开辟变量地址空间,用标识符名称来指向堆区空间,堆区空间的大小就是数据类型的大小,同时向堆空间里存放初始值
例如:

	int * p = new int50;//开辟堆空间的时候同时对该空间进行初始化工作,初始化为50

释放:

delete p;

开辟数组地址空间(一维数组)
格式:
数据类型(内置的基本的数据类型和自定义的数据类型) * 标识符名称 = new 数据类型 [ 数组的大小 ] ;//在堆区开辟变量地址空间,用标识符名称来指向堆区空间,堆区空间的大小就是数据类型的大小,同时指定数组的大小
例如:

int *arr  = new int[10] ;//在堆区开辟一个具有10个元素的数组空间

释放:

delete [] arr ; 

开辟数组地址空间的时候同时进行初始化工作:
格式:
数据类型(内置的基本的数据类型和自定义的数据类型) * 标识符名称 = new 数据类型 [ 数组的大小 ] {元素值};//在堆区开辟变量地址空间,用标识符名称来指向堆区空间,堆区空间的大小就是数据类型的大小,同时指定数组的大小和初始值
例如:

int *arr = new int[5]{
   1,2,3,4,5};

释放:

delete [] arr;

然后是最重要的类和对象
类和对象
1、类(class)
描述现实世界中的事物,用C++进行编程的时候,通常是将现实世界中的事物用类来进行描述,类的关键字:class,描述一个人,特征:姓名、年龄、性别、肤色等等,行为:吃饭、睡觉、走路、跑步等等,类是一个泛指(抽象)的概念,不是特指某一个事物,简单的理解为没有实实在在存在于现实世界中(只是你脑海里一个概念)
用类描述事物的格式:
class 类名(标识符名称)
{
//特征—变量
//行为—函数
};
例如:描述一个人,人具备:姓名、年龄、性别、肤色等特征, 具备:吃饭、睡觉、走路、跑步等行为

class People
{
   
	//特征
	char name[5];//name用于描述姓名
	int age;//age用于描述年龄
	char sex;//sex用于描述性别
	char fuse;//fuse用于描述肤色
	//行为
	void eat()//吃饭
	{
   

	}
	void sleep()//睡觉
	{
   

	}
	void walk()//走路
	{
   

	}
	void run()//跑步
	{
   

	}
};

2、对象
对象是类的实例化(特指实际的例子),是特指的概念,例如:人(泛指的概念)-----对人进行实例化------张三(特指的概念)
对象的实例化格式:
(1)在栈区实例化--------栈区实例化的对象,不需要用户手动的去释放内存,编译器会自动释放内存
格式:
类名 对象名(标识符名称);
例如:

People  zhangsan;
类似C里的------>int   a;

(2)在堆区实例化-------堆区实例化的对象,需要用户手动的去释放内存,如果不释放,很容易造成内存泄露
格式:
类名 * 对象名(标识符名称)= new 类名;
例如:

People * lisi  = new  People;

(3)如何访问类里面的成员(成员变量+成员函数)
根据在内存里实例化的方式不同,访问也有所不同
a、在栈区实例化
访问成员格式:
对象名(标识符名称). 成员;
例如:

zhangsan.eat();//访问People里的eat方法

b、在堆区实例化
访问成员格式:
对象名(标识符名称)-> 成员;
例如:

lisi->sleep();

类的成员访问修饰符
作用:为了保护类的成员,C++提供了三种类的成员访问修饰符
public(公共)、protected(受保护)、private(私有)
访问修饰符的作用范围:
a、从public:后面开始一直到类体结束(类的后括号之前 })都是属于public属性下的成员
b、如果有两个或者两个以上的成员访问修饰符,从第一个访问修饰符开始到另一个当问修饰符开始

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PCL (Point Cloud Library) 是一个非常强大的点云处理库,它提供了丰富的功能来处理、分析和可视化点云数据。下面将从学习教程的角度来介绍PCL C++ 学习教程。 在学习PCL C++学习教程之前,我们先了解一下PCL的基础知识。PCL是一个开源项目,可以在Windows、Linux和Mac OS等操作系统上使用。它提供了常见的点云数据类型、滤波、分割、配准、特征提取和重建等功能。此外,PCL还有一个强大的可视化模块,可以方便地实时显示点云数据。 对于初学者而言,可以从PCL官方网站上的教程入手。官方网站提供了完整的文档和示例代码,可供学习者参考。此外,还有一些博客和视频教程可以帮助学习者更好地掌握PCL的使用。 学习PCL C++,需要一定的编程基础知识,例如掌握C++语言、面向对象编程和基本的算法理论等。在学习过程中,可以按照如下步骤进行: 1. 安装PCL库:根据自己的操作系统选择合适的安装方式,到PCL官方网站下载安装包并按照指南进行安装。 2. 学习PCL的基础知识:首先熟悉PCL的常见数据类型,例如点云表示和常见的PCL数据结构。然后学习如何读取和保存点云数据,以及基本的点云操作和可视化。 3. 学习PCL的模块功能:PCL库包含多个模块,例如滤波、分割、配准、特征提取和三维重建等。可以针对自己的需求选择相应的模块进行学习,并掌握它们的基本原理和使用方法。 4. 练习和实践:通过完成一些PCL的实际项目,例如点云配准、目标检测或三维重建等,来巩固所学的知识。 总之,学习PCL C++需要一定的时间和耐心,通过实践和不断学习,逐渐掌握PCL的使用技巧。希望以上简要的回答能对你理解PCL C++学习教程有所帮助。 ### 回答2: PCL(Point Cloud Library)是一个开源的计算机视觉库,主要用于处理和分析点云数据。它提供了许多功能强大的算法和工具,可以帮助开发人员在点云处理方面进行快速开发。 PCL C学习教程是PCL官方提供的一份入门教程,旨在帮助初学者快速上手PCL C的开发。该教程主要介绍了PCL的基本概念和使用方法,并提供了一些常见的点云处理算法的示例代码。通过学习PCL C学习教程,我们可以了解PCL的基本功能和使用技巧,并且可以开始进行简单的点云处理任务。 在学习PCL C的过程中,我们需要掌握一些基础知识,比如点云的表示和存储方式、点云的滤波和分割方法、点云的特征提取和匹配算法等等。PCL C学习教程提供了详细的解释和示例代码,以帮助我们理解和运用这些基础知识。 此外,PCL C学习教程还介绍了一些常见的点云处理应用场景,比如目标检测、点云配准和重建等。通过学习这些应用场景,我们可以了解到PCL C在不同领域的应用和相关的算法思想。 总结来说,PCL C学习教程是学习和使用PCL的入门指南,通过学习教程中的内容,我们可以掌握PCL C的基础知识和技能,并且开始进行简单的点云处理任务。 ### 回答3: PCL(Point Cloud Library)是一个用于点云数据处理的开源库。学习PCL可以帮助我们更好地理解和处理点云数据,从而在计算机视觉、机器人领域等方面开展相关工作。 学习PCL可以从以下几个方面入手。首先,了解PCL的基本概念和原理是非常重要的。PCL涵盖了点云数据获取、滤波、特征提取、配准等算法,了解这些基本概念是进行更高级别的数据处理的基础。 其次,学习PCL的使用方法。PCL提供了丰富的功能库和示例代码,通过实践使用可以更好地掌握PCL的各项功能。可以通过看官方文档、阅读教程、查阅论坛等方式学习PCL的使用方法。 再次,尝试应用PCL解决实际问题。通过完成一些小项目,如点云数据的滤波、分割、配准等任务,可以锻炼我们对PCL的熟练程度,并将PCL应用于实际工程中。 最后,与其他PCL爱好者交流学习。在互联网上可以找到很多与PCL相关的讨论组、社区和论坛,与其他使用PCL的人交流经验、分享学习心得,可以提高我们的学习效果。 总之,学习PCL需要理解基本概念和原理、掌握使用方法、应用于实践项目以及与他人交流学习。希望以上建议对学习PCL有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值