- 博客(10)
- 收藏
- 关注
原创 Effective C++ 多态基类声明virtual析构函数
在普通类继承里,删除子类对象会先调用子类的析构,再调用父类的析构。我们删除的是父类指针,调用的只是父类的析构函数,子类析构不会被调用,也就是说,子类对象没有被删除,而指针却没了。如果基类的析构函数是虚拟的,删除基类指针时,C++ 会确保首先调用派生类的析构函数,然后再调用基类的析构函数。这是确保对象正确销毁的关键;可以看出只会调用基类的析构函数,而子类的析构函数并没有调用,子类对象没有被删除,导致内存泄漏;当通过基类指针删除对象时,应该确保可以调用派生类的析构函数,为实现该目的,可以使用类的虚析构函数;
2024-10-29 19:40:11
184
原创 C++ virtual
当一个类从多个基类继承,而这些基类又共享一个更基础的基类时,如果没有使用虚基类,那么在派生类中会存在基础基类的多个实例,这会导致成员变量的二义性和资源浪费。这意味着如果派生类中有一个同名、同参数列表的函数,那么这个函数将被视为是对基类虚函数的重写。当通过基类的指针或引用调用这个函数时,C++运行时系统会查找并调用实际对象类型中相应的函数。虚基类确保即使在多重继承的路径中,共享的基础基类也只被继承一次,从而保证了成员变量的唯一性。(动态多态):通过虚函数实现,允许在运行时根据对象的实际类型选择合适的方法。
2024-10-28 11:25:11
1836
原创 C++设计模式——单例
单例具有全局可访问的特点,当单例成功创建之后,可以在整个程序的任意位置访问该对象,这与C++编程中尽可能限定作用域确保程序安全的思想略有冲突,所以在使用单例的时候,确保单例对象是唯一的.
2024-10-28 10:04:09
179
原创 多线程编程
线程是轻量级的进程,每个线程可以独立的运行不同的指令序列,但是线程不独立的拥有资源,依赖于创建它的进程而存在。使用joinable()方法判断能否使用join或detach,该方法返回一个布尔值,如果线程可以被join()或detach(),则返回true,否则返回false。使用t.detach()分离线程,让它在后台运行(也就是主线程结束了 但是子线程让他继续运行),注意一旦线程被分离,就不能再使用`t.join()`方法等待它完成。要创建线程,我们需要一个可调用的函数或函数对象,作为线程的入口点。
2024-10-25 09:22:32
952
原创 const 关键字
如果给以“指针传递”方式的函数返回值加 const 修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针。在类中,使用const修饰成员函数,表明该函数不会修改类的任何成员变量,可变数据成员 (mutable data member) 除外。在函数的参数中使用const可以防止在函数内部修改参数值,特别是当传递指针或引用的时候;const修饰指针有常量指针和指针常量,在工程化中更为常用的是指针常量;1.防止修改指针指向的内容。2.防止修改指针指向的地址。
2024-10-24 19:44:32
332
原创 static关键字
static修饰了局部变量x,令局部变量x变成静态的,且只能初始化一次,使得每次test()函数结束时局部变量x都不销毁,再次进入test()函数时则保留原有数值运行,因此x++数值越来越大。全局变量的作用域十分的广,只要在一个源文件中定义后,这个程序中的所有源文件、对象以及函数都可以调用,生命周期更是贯穿整个程序。中,它改变了局部变量的存储位置,从而使得变量的生命周期延长,延长至程序结束才销毁。static对函数的修饰与修饰全局变量十分相似,修饰函数时会改变函数的。,从而使得函数的作用域变小。
2024-10-24 17:23:09
1001
原创 指针与智能指针
虽然unique pointer不支持拷贝不支持赋值操作,但是存在例外情况,即当源unique pointer即将被销毁的时候,它是可以被赋值的,可以利用这个特性从函数中返回unique pointer;常量指针:指针指向的是常量,其指向的内容是不可以改变的,不能通过指针来修改它指向的内容,但是指针自身不是常量,它自身的值可以改变,从而指向另一个常量(地址)指针常量:指针本身是常量,其指向的地址是不可改变的,但是地址里的内容是可以改变的,指针常量在定义的时候必须同时赋初值。持续更新中.......
2024-10-20 17:46:32
258
原创 ROS导航模块概述
通过里程计定位(odom)ROS中,是一个标准消息类型,用于表示里程计信息。包含机器人的位置、姿态以及速度信息,其在nav_msgs包中定义;#include // geometry_msgs 用于处理机器人的位姿信息// 发布类型为nav_msgs::Odometry,话题为odom,消息队列大小为50;// 10 Hz优点:连续、无跳变;缺点:存在累计误差;(路面不平、测速不准、车轮打滑等都会产生误差,长时间以及长距离会导致误差累积)
2024-08-11 11:44:45
1085
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人