C/C++
会飞的土豆子
专注嵌入式开发、自动化探索
展开
-
C++的接口与实现隐藏
定义一个接口类用作父类,在定义一个工厂类让子类的实例化都被隐藏,这样在后续对实现的类的调用 就不用包含任何关于实现类的代码或文件。2.子类实现了父类的虚函数后,父类的指针指向了子类的实体,调用父类中声明的函数实际会被虚函数表重定向到子类。可以看到在main文件或者其他需要调用的模块中是不会出现实现的.h和.cpp及内部方法的。具体的实现类,要被隐藏的实现,这个文件不会对外暴露,外界也不在需要。以上就实现了C++的接口 也做到了关键实现类的方法和成员的隐藏。1.当子类继承父类时,子类就有了父类的所有方法。原创 2024-04-10 20:42:17 · 200 阅读 · 0 评论 -
不能用memcmp来比较结构体
结构体成员要遵守内存对齐原则,所以当出现设计的结构体因为内存对齐而补了字节后,在用memcmp来比较两个结构体就会出来bug,因为memcmp是逐字节比较的,而我们的结构体因为存在补齐的字节(这部分字节的数值是该内存使用过后的垃圾数值,具体内容不定义)所以就会出现明明结构体成员都是一样的但是memcmp还是告诉你两个结构体不同。原创 2023-12-14 17:06:30 · 106 阅读 · 0 评论 -
C++的强制类型转换
static_cast 是“静态转换”的意思,也即在编译期间转换,转换失败的话会抛出一个编译错误。一般用于如下:用于数据的强制类型转换,强制将一种数据类型转换为另一种数据类型。用于基本数据类型的转换。用于类层次之间的基类和派生类之间指针或者引用的转换(不要求必须包含虚函数,但必须是有相互联系的类),进行上行转换(派生类的指针或引用转换成基类表示)是安全的;进行下行转换(基类的指针或引用转换成派生类表示)由于没有动态类型检查,所以是不安全的,最好用 dynamic_cast 进行下行转换。原创 2023-12-14 16:55:36 · 46 阅读 · 0 评论 -
C/C++的常量指针和指针常量的区别
常量指针本质上是个指针,只不过这个指针指向的对象是常量。特点:const 的位置在指针声明运算符 * 的左侧。只要 const 位于 * 的左侧,无论它在类型名的左边或右边,都表示指向常量的指针。(可以这样理解:* 左侧表示指针指向的对象,该对象为常量,那么该指针为常量指针。指针指向的对象不能通过这个指针来修改,也就是说常量指针可以被赋值为变量的地址,之所以叫做常量指针,是限制了通过这个指针修改变量的值。虽然常量指针指向的对象不能变化,可是因为常量指针本身是一个变量,因此,可以被重新赋值。原创 2023-12-14 16:30:53 · 50 阅读 · 0 评论 -
C++的指针指向类成员函数
参考链接:https://leetcode.cn/leetbook/read/cmian-shi-tu-po/vdlag5/指向对象成员的指针,包括指向对象成员函数的指针和指向对象成员变量的指针。特别注意:定义指向成员函数的指针时,要标明指针所属的类。来源:力扣(LeetCode)原创 2023-12-14 16:18:47 · 64 阅读 · 0 评论 -
C/C++的sizeof
sizeof算的是字节、strlen计算的是字符串长度sizeof是编译器内置函数,作用在编译期间,由编译器计算并替换数值strlen是库函数,作用在函数运行期间,在程序运行时计算并替换数值sizeof不对输入的表达式进行计算,只是推导输入的表达式的类型,从而计算占用。原创 2023-12-13 15:19:41 · 16 阅读 · 0 评论