自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 Kafka伪集群环境搭建

由于笔记本资源有限,采用伪集群方式,用端口隔离搭建集群环境,踩坑颇多做此纪录!

2022-12-17 21:36:51 395 1

原创 QT中使用多线程循环打印ABC

#include <QApplication>#include <QThread>#include <QMutex>#include <QWaitCondition>#include <QDebug>QMutex mutex1_;QMutex mutex2_;QMutex mutex3_;QWaitCondition cond1_;QWaitCondition cond2_;QWaitCondition cond3_;clas

2021-08-04 19:56:24 593

原创 面试常见问题C++(一)深拷贝与浅拷贝

浅拷贝:简单的赋值拷贝操作深拷贝:在堆区重新申请空间,进行拷贝操作总结:如果属性有在堆区开辟的,一定要自己提供拷贝构造函数,防止浅拷贝带来的重复释放堆区内存问题class Person {public: //无参(默认)构造函数 Person() { cout << "无参构造函数!" << endl; } //有参构造函数 Person(int age ,int height) { cout << "有参构造函数!" << e

2021-05-25 21:22:07 167

原创 C++ 模板template(二)——普通模板与函数模板

普通函数与函数模板的区别:普通函数调用时可以发生自动类型转换(隐式类型转换)函数模板调用时,如果利用自动类型推导,不会发生隐式类型转换如果利用指定类型方式,可以发生隐式转换#include <iostream>using namespace std;//普通函数int myAdd01(int a,int b){ return a+b;}//函数模板template <class T>T myadd02(T a,T b){ return a

2020-09-22 15:21:44 105

原创 C++ 模板template(一)

基本语法:template <class T>基础测试代码:#include <iostream>using namespace std;template <class T>void mySwap(T &a,T &b){ T temp=a; a=b; b=temp;}template <class T> //每次使用前得声明void sortArr(T arr[],int len)

2020-09-22 11:03:03 133

原创 C++ 文件操作详解 fstream

C++中对文件操作需要包含头文件fstream操作文件三大类:1.ofstream:写操作2.ifstream:读操作3.fstream:读写操作写文件主要步骤:1.包含头文件#include <fstream>2.创建流对象ofstream ofs;3.打开文件ofs.open("文件路径",打开方式);4.写数据ofs<<"写入的数据";5.关闭文件ofs.close();文件打开方式:打开方式解释ios::in

2020-09-07 16:42:16 399

原创 C++ 多态(四)——虚析构和纯虚析构

多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码解决方法:将父类中的析构函数改为虚析构或者纯虚析构虚析构和纯虚析构共性:可以解决父类指针释放子类对象都需要具体的函数实现虚析构和纯虚析构区别:如果是纯虚析构,该类属于抽象类,无法实例化对象虚析构语法:virtual ~类名(){}纯虚析构语法:virtual ~类名()=0;类名::~类名(){}总结:1.虚析构或纯虚析构就是用来解决通过父类指针释放子类对象2.如果子类中没有堆区数据,可以

2020-09-07 14:29:51 181

原创 C++ 多态(三)——纯虚函数和抽象类

在多态中,通常父类中的虚函数的实现都是毫无意义的,主要调用的都是子类重写的内容因此可以将虚函数改为纯虚函数纯虚函数语法:virtual 返回值类型 函数名 (参数列表)=0;当类中有了纯虚函数,这个类也称为抽象类抽象类特点:无法实例化对象子类必须重写抽象类中的纯虚函数,否则也属于抽象类#include <iostream>using namespace std;class Base //只要有一个纯虚函数,这个类称为抽象类{public: virtual v

2020-09-07 11:26:48 108

原创 C++ 多态(二)——多态优点

多态的优点:代码组织结构清晰可读性强利于前期和后期的扩展以及维护 对拓展开放,对修改关闭#include <iostream>#include <string>using namespace std;//普通写法class Calculator{public: int m_num1; int m_num2; Calculator(int num_1, int num_2) { m_num1=num_1;

2020-09-07 10:36:00 1457 1

原创 C++ 多态(一)——多态的基本语法

多态是C++面对对象三大特性之一多态分为两类:静态多态:函数重载和运算符重载属于静态多态,复用函数名动态多态:派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址早绑定-编译阶段确定函数地址动态多态的函数地址晚绑定-运行阶段确定函数地址动态多态的满足条件:1.有继承关系2.子类重写父类的虚函数#include <iostream>using namespace std;class Animal{public: virtual voi

2020-09-07 08:58:46 174

原创 C++ 继承(四)——多继承语法

C++允许一个类继承多个类语法:class 子类:继承方式 父类1,继承方式 父类2 …多继承可能引发父类中出现同名成员,需要加作用域区分C++ 实际开发中不建议用多继承#include <iostream>using namespace std;class Base1{public: int m_A; int m_B; Base1() { m_A=100; }};class Base2{public: in

2020-09-05 15:31:34 155

原创 C++ 继承(三)——继承同名成员处理方式

当子类与父类出现同名的成员,如何通过子类对象,访问到子类或者父类中同名的数据访问子类同名成员,直接访问即可访问父类同名成员,需要加作用域#include <iostream>using namespace std;class Base{public: int m_A; Base() { m_A=100; } void func() { cout<<"Base"<<endl;

2020-09-04 16:22:51 168

原创 C++ 继承(二)——继承中的对象模型

继承中已经完整基层父类内容,但是私有成员编译器隐藏,不可访问。#include <iostream>using namespace std;class Base{public: int m_A;protected: int m_B;private: int m_C;};class Son1:public Base{public: int m_D;};void test01(){ Son1 s1; cout<&l

2020-09-04 15:42:15 63

原创 C++ 继承(一)——基础用法

继承优点:减少代码重复语法:class 子类:继承方式 父类 (子类亦称为派生类,父类亦称为基类)继承方式共有三种:公共基础保护继承私有继承#include <iostream>using namespace std;class Base{public: int m_A;protected: int m_B;private: int m_C;};class Son1:public Base{public: void

2020-09-04 15:25:59 94

原创 C++ 6种运算符重载详解

运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型加法运算符重载1.通过成员函数重载“+”2.通过全局函数重载“+”#include <iostream>using namespace std;class Person{public: int m_a; int m_b; Person(int a,int b) { this->m_a=a; this->m_b=b;

2020-09-04 11:20:56 427

原创 C++ friend 友元类——访问类中私有成员

友元的目的:让一个函数或类 访问另一个类中私有成员友元的三种实现:全局函数做友元类做友元类成员函数做友元#include <iostream>#include <string>using namespace std;//2.类做友元class GoodFriend{public: Building *building; void visit() //参观函数 访问Building中的属性 { cout<&

2020-09-03 14:57:20 4046

原创 C++ 类class const修饰成员函数

常函数:成员函数后加const后我们称这个函数为常函数常函数内不可以修改成员属性成员属性声明关键字mutable后,在常函数中依然可以修改常对象:声明对象加const称该对象为常对象常对象只能调用常函数#include <iostream>using namespace std;class Person{public: int m_a; mutable int m_b; void showPerson() const //常函数不可

2020-09-03 11:07:58 801

原创 C++ this指针作用解析

this指针用途:当形参和成员变量同名时,可用this指针来区分在类的非静态成员函数中返回对象本身,可使用return *this #include <iostream>using namespace std;class Person{public: int age; Person(int age) { this->age=age; //1.当形参和成员变量同名时,可用this指针来区分 } Perso

2020-09-03 10:25:42 145

原创 C++ class静态成员变量与静态成员函数 static

静态成员变量:所有对象共享同一份数据在编译阶段分配内存类内声明,类外初始化静态成员函数:所有对象共享同一个函数静态成员函数只能访问静态成员变量#include <iostream>using namespace std;class Person{public: int m_a; //非静态成员变量 static int m_age; //静态成员变量 static void func() //静态

2020-08-31 11:12:22 212

原创 C++ 深拷贝与浅拷贝——面试经典常见坑

浅拷贝:简单的赋值操作拷贝深拷贝:在堆区重新申请空间,进行拷贝操作浅拷贝带来的问题是堆区内存重复释放。可利用深拷贝解决。#include <iostream>using namespace std;class Person{public: int m_age; int *m_Height; Person(){cout<<"无参构造函数"<<endl;} Person(int age,int height) {

2020-08-31 10:07:27 163

原创 C++ 拷贝构造函数介绍

拷贝构造函数调用的三种情况:1.使用一个已经创建完毕的对象来初始化一个新对象2.值传递的方式给函数参数传值3.以值方式返回局部对象#include <iostream>using namespace std;class Person{public: int age; Person() { cout<<"构造函数"<<endl; } Person(int _age) { age

2020-08-24 09:35:47 62

原创 C++11 函数重载注意事项

函数重载满足条件:1.在同一个作用于下2.函数名称相同3.函数参数类型不同,或者个数不同,或者顺序不同注意事项:1.引用作为重载条件2.函数重载碰到默认参数#include <iostream>using namespace std;//1.引用作为函数重载void func1(int &a){ cout<<"func1(int &a)"<<endl;}void func1(const int &a){

2020-08-20 16:55:06 294

原创 C++ 内存分区: 代码区 全局区 栈区 堆区

1.代码区: 存放函数体的二进制代码,由操作系统进行管理**2.全局区:**存放全局变量和静态变量以及常量,数据在程序结束后由操作系统释放存放内容:全局变量、静态变量、常量区(字符串常量和其他常量)**3.栈区:**由编译器分配和释放,存放函数的参数值,局部变量等**4.堆区:**由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收...

2020-08-20 15:29:16 221

原创 ROS 配置多个依赖

配置依赖rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y

2020-08-19 09:24:00 148

原创 无人驾驶车辆运动规划方法综述

无人驾驶车辆运动规划方法综述1. 定义车辆运动规划(Motion Planning)是指生成衔接车辆起点与终点的几何路径,同时给出车辆沿该路径运动的速度信息,并使车辆在整个运动过程中满足运动学 / 动力学约束、碰撞躲避约束以及其他源自内部系统或外部环境的时间和 / 或空间约束条件。路径规划(Path Planing)(一般指位置规划)是找到一系列要经过的路径点,路径点是空间中的位置或关节角度,而轨迹规划(Trajectory Planning)是赋予路径时间信息。在实际工程应用中,下发的往往是路径而

2020-07-29 10:58:14 3770

原创 catkin_make解决Could not find a package!!!

catkin_make解决Could not find a package!!!环境配置,缺啥补啥;统一:sudo apt-get install ros-kinetic-注意:1.我的ros版本是kinetic2.后面注意所有下划线"_",均改为“-”3.不加config编译再次遇到该情况,却无法读取软件包! 这里应当换源,重新sudo apt-get updatesudo apt-get install ros-kinetic-jsk-recongnition-msgs...

2020-07-28 09:24:28 535

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除