- 博客(36)
- 收藏
- 关注
原创 c++类【终章】
有事没事都别用私有继承,有病。一般用包含。建立has-a关系。尽量不要用多重继承,要用的话,多使用类名进行限定进行调用,减少二义性的出错。
2025-05-11 19:37:51
1014
原创 c++类【高潮】
如果,在派生类中要重新定义,在基类中,该方法要定义为虚函数。构造函数不能定义为虚函数,因为不可继承。析构函数一般要定义为虚函数。友元函数不能是虚函数,因为友元函数不是类的成员函数。如果重新定义了继承的方法,要确保与原型完全相同(指特征标),返回类型需要根据新的类进行修改,保持与新类一致。如果基类的方法有重载,在派生类中,要重新定义所有的基类重载版本,否则,派生类只能调用重新定义的几个版本,其它基类的版本将被隐藏,派生类不能用没有重新定义的版本。自动创建的函数,表明很重要默认构造函数。
2025-05-10 18:58:03
844
原创 c++类【发展】
类的静态成员(用static声明的成员),在声明之外用例单独的语句进行初始化,初始化时,不再需要用static进行限定。在方法文件中初始化。以防重复。
2025-05-06 23:30:15
1026
原创 c++类【开端】
访问类的成员,唯一方法就是通过使用类的方法,但是友元避开了这个限制,解决了一些不能用的场景。运算符重载,运算符函数可以是成员函数,也可以是友元函数,但是一般建议定义成友元函数,可以避开第一个操作数必须是类对象的限制。转换函数,就是将类转换为其它类型,一般要自定义。还有就是将其它类型转换为类,这个一般可以通过只有一个参数的构造函数自动转换,通过要构造函数前加explicit可以限制自动转换,只能显性调用转换,减少出错。
2025-05-05 22:48:39
433
原创 【C++类】序幕
私有部分-private:类,做为一个中间商,就会有秘密,就是作为一个中介的生存根本,就是不能给大家知道的,知道了他们就活不下去了,很容易被客户踢掉,客户自己干了。所以,这部分内容就要设置为私有的。一般是存储信息。公开部分-public:作为中间商,它要和客户、上游生产商打交道,所以,肯定有一些东西要公开,比如,对客户,它要公开它有啥新产品可以卖给客户的。让大家知道它能干啥,大家才知道去找他。一般是方法(函数),访问存储信息或操作信息。类默认是私有的,不需要特别说明。
2025-05-05 17:01:02
793
原创 c++存储持续性和链接性
关于名称的存储,要打开思维,不要局限在变量这一个名称里,名称包括很多,变量,常量,函数,类的定义等。有名称的都在考虑范围里。这是我自己在读这章的时候思维调整不过来的地方,潜意识里总是不能联想到变量,或者只想到变量,没有想到函数,类这些。导致思考问题时容易出错,思维混乱。关于变量,我们关心的就是,多个文件时,这个文件里的变量,那个文件里能不能用。有时我们希望另一个文件能用它,有时候我们希望另一个文件不能用它。要解决这个关心,熟悉名称的链接性就可以了,外部链接性的,在别一个文件就可以用。
2025-05-05 11:16:26
954
原创 如何理解内存泄漏
为啥不能使用:因为,当使用这块动态内存的指针使用这块后内存后,没有释放这块内存,它就被程序认为一直占用。而写程序的又没忘了这个指针了,就在程序存在期间一起存在,或者函数执行完自动消除了这个指针变量。重启来过,重启就释放了全部内存重新来过,所以问题也就得到解决了,所以,江湖传言,重启解决90%以上的问题,大多如此。内存泄漏了,就说明相对这个程序而言,泄漏的这些内存,这个程序自己不能再用的。所以就认为是泄漏了。为啥这处程序不能使用这些内存了呢,因为这个程序认为,这些内存一直被占用着,不能使用。
2025-05-02 12:10:56
223
原创 谈谈关于【枚举】类型变量的好处
按书上写的定义,上限:找上限,先找到定义枚举量的最大值A,再找到大于这个最大值A的最小的2的幂B(这句是不是很绕口?),再将B减去1得到C,C就是枚举量的取值上限。下限:找下限,先找到枚举量的最小值a,如果>=0,下限就是0。否则,和取上限的方式 一样,等到C值后,取反(加个负号)。既然这么复杂,只是为了一个常量。为什么不直接用const定义就好了,还方便理解?1. 提高代码可读性(语义清晰)枚举允许用有意义的符号名称代替 “魔法数字”(magic numbers),使代码更易理解。
2025-04-26 21:40:05
779
原创 自动驾驶第一性原理
自动驾驶第一性原理最终可归结为:在经典理物理约束下,通过信息熵最小化(消除不确定性)实现路径最优化。所有的技术路径演进(深度学习,v2x,高精地图),本质上都是为了更逼近这个理想状态。
2025-04-14 23:04:55
670
原创 基于模型预测控制算法(MPC)用到的求解器对比(osqp/hpimp)
从学习的角度看,先学习用osqp求解器,有精力再学习phimp求解器使用。
2024-12-16 09:45:46
1726
2
原创 拉普拉斯变换/傅立叶变换/欧拉公式/泰勒级数的关联
要看懂拉普拉斯变换,要先知道傅立叶变换,要看懂傅立叶变换,要先知道复指数函数,要看懂复指数函数,就先知道欧拉公式。要看懂欧拉公式,就要先知道泰勒级数。
2024-11-25 16:15:42
1030
原创 矩阵/矩阵乘法/特征值/特征向量的讲解
线性代数里有很多的概念,很多概念是有几何意义的,了解了几何意义可能会更好的理解各种概念及其相互之间的关系。
2024-11-23 22:57:52
2426
原创 git常用命令整理
这个文章写的很实用,直接从第二点开始看。合适第一次接触的看,查阅的话,不太方便。整理一下,高频常用的命令,对于一些不常用git但是又偶尔用一下时,提高使用效率。
2024-11-21 10:54:35
1152
原创 自动驾驶控制原理2
在原理1中,这个推导,前前后后复习了好多遍,主要是要自己推出来,不是死记硬背能解决的,必须理解。所以前前后后搞了好多天。最后得到了两个函数,一个是代价函数,一个是约束方程(即:运动满足动力学方程)。得到A和B,给定Q,R(这两个其实是表示err,u这两部分各自的权重),用lqr算法就可以得到合适的u(方向盘转角),可以说就算完成了,至于算出来的结果是否最佳,就要调式合适的Q,R了。这篇主要记录lqr算法具体是怎么算的。
2024-11-10 23:24:41
360
原创 自动驾驶控制原理1
写这个吧,主要是检查下自己掌握到什么程度,并且用来快速复习关键知识点。基于这一系列教程总结的,结合自己的理解,编排了先后顺序,个人认为符合初始认知些。自动驾驶控制模块的目的就是执行规划给的轨迹,把车移动到规划期望的位置去。但是车不能原地横向移动(正常情况下,不考虑非正常情况),所以,只能通过转动方向盘,借助速度变化来实现横向移动。所以,这就引出一个问题,如何通过方向盘及速度来实现横向移动,移动到目标位置去。所以,存在一个如下的函数关系:那如何能找到这样一个函数f呢?
2024-10-28 22:07:44
951
原创 参数param及action创建
同样,这篇文章只适合有完成走过一遍例子,用来助记关键知识点用。没有详细的操作,详细代码的相关博文太多了,不缺我再写一篇垃圾。
2024-10-23 23:08:42
1066
原创 ros2创建节点及服务主要步骤总结(c++/linux)
这里写的不适合从0开始一步步学习ros2的朋友,适合那些了解过一遍,不是很熟悉,需要一点提示,以及查漏补缺的朋友,适合复习和快速回忆的情况。写的有点乱,尽量按先后顺序记录各个知识点。
2024-10-10 23:05:53
1172
1
原创 Lambda函数
](输入变量){执行语句;return ……};// [ ]里可以写变量名,&变量名,意义也是输入的变量,只是这个输入是作用域里的变量,不是函数调用传入的。
2024-09-28 23:12:51
263
原创 ostream/cout/cin
1、设置以不同进制显示数字(8进制:oct;10进制:dec;16进制:hex)。进制通过控制符设置,控制符不是类的成员函数(可能是友元函数,不知道,反正是可以设置显示格式,控制符是一个函数)。所以,不能通过类调用方法的形式。但是是个函数,就通过函数的方法调用:比如十进制:dec(cout)。把cout当参数传入。就可以修改cout的输出进制表达了。2、调整字宽(字宽这个名字都不好理解 ,感觉很抽象,中文很少提字宽吧。字宽就是指要输出的这一批字符占多少列)。成员函数:width()。
2024-09-28 21:31:02
998
原创 vectory/array/valarray(STL)
学习STL时,就会遇到上述3个关于“数组”的模板。C++提供了3个这样创建数组的方法,是3个不同团队开发的,不同的目的,所以就有了3个。
2024-09-28 15:21:42
223
原创 cmake主要语句用法(temp)
这个看前面几段可以帮助熟悉。写的有点多,后面感觉不是很实用。我这个就写的比较乱了,主要是自己理解的也不是很透彻,了解啥先写点啥,后面了解多了,再完善。看了这些,基本能看懂cmakelist.txt文档了。编译报错基本也能知道啥原因吧。
2024-09-27 16:27:41
753
原创 RTTI及类型强制转换dynamic_cast/const_cast/static_cast
RTTI:运行阶段类型识别(Runtime Type Identification)。为啥要有这个呢,主要还是因为:基类的指针允许指向派生类对象。这就导致一个问题:一个基类的指针,运行时,你不知道它指向的到底是基类对象,还是派生类对象。所以,有了运行时类型识别(RTTI)这个概念。为啥需要知道是指向基类还是派生类?因为假如要用这个指针去调用一个方法(假如叫A方法),派生类才有A方法,基类没有A方法。如果不能确定它是派生类的对象时,冒然调用这个A可能导致错误。(至于为啥要让基类的指针去指向派生类对象呢?
2024-09-25 23:34:56
706
原创 VS Code调式C++程序配置方法总结(windows系统+linux)
VS Code调式C++程序配置方法总结,task.json,launch.json, c_cpp_properties.json3个文件的设置及含义。
2024-09-21 13:56:41
2380
原创 Linux系统无法输入中文(fcitx架构)
按sogou输入法安装后,仍不能正常输入汉字。能输入中文的字符,比如。《 》类似这样的字符,但就是不能输入汉字。
2023-11-15 22:55:21
726
1
原创 Qt creator不能输入中文解决方法总结
要复制qt6文件夹下的.so文件。不是说qt5.15.2版本,就想当然的复制qt5文件夹下的.so文件。而是要复制qt6文件夹下的。因为qtcreator是基于qt6开发的。“到这里,我就把qt6目录下的so文件拷贝到上面提到的目录。打开文件,可以输入中文了。试了很多方法 ,参考各种方法,最后发现,.so文件用错了。以下是梳理的整个解决过程参考的有价值的文档。以下是自己编译fcitx-qt5方法。如是不自己编译,可以跳过。关键是复制哪个.so文件。按上以方法操作,编译出相应的.so文件。
2023-09-28 23:02:56
1212
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人