编程

该标签下有 5 篇文章
C++ 操作文本文件 自僱
编程

C++ 操作文本文件

操作文本文件需包含头文件`#include <fstream>`。写文件步骤包括创建输出流对象、打开文件、写入数据和关闭文件。打开模式可选择覆盖或追加内容,需判断文件是否成功打开。读文件步骤包括创建输入流对象、打开文件、读取数据和关闭文件,读取方式可使用`getline`、`>>`运算符或字符串流。对于二进制文件,操作步骤类似,需注意文件路径和打开模式。
自僱 10 分钟阅读
拷贝构造函数&浅拷贝与深拷贝 自僱
编程

拷贝构造函数&浅拷贝与深拷贝

拷贝构造函数是用于复制对象的构造函数,通常只有一个参数,类型为本类的引用。若未自定义,编译器会生成默认拷贝构造函数。浅拷贝仅复制指针成员,导致多个对象指向同一内存,可能引发错误;而深拷贝则创建独立的对象,确保内存不共享。示例中展示了如何实现拷贝构造函数以支持深拷贝,避免浅拷贝带来的问题。
自僱 4 分钟阅读
结构体内存对齐 自僱
编程

结构体内存对齐

为什么存在内存对齐 1.平台原因(移植原因) 不是所有的硬件都能任意访问任意地址上的任意数据的,某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出异常 2.性能原因 数据结构(尤其是栈)应该尽可能的在自然边界上对齐,为了访问未对齐的内存,CPU需要访问内存2次;访问对齐后的内存,CPU只需要访问内存1次。 在Windows的VS中默认对齐值为8 Linux中(GCC编译器)默认对齐值为4 在内存中我们一般读取数据不是按内存来读取,一般都是按内存块来读取。 未对齐的情况下,当需要访问int类型的数据时,需要CPU访问2次内存块(内存块1和内存块2) 对齐的情况下,当访问int类型的数据时,只需要CPU访问1次内存块(内存块2)即可 是一种空间换时间的做法 结构体内存对齐规则 * 第一个成员在结构体变量偏移量为0的地址 * 有效对齐值为Min(编译器默认对齐值,结构体中成员数据类型中占用内存最大值) * 其他成员要对齐到Min(有效对齐值,该成员数据类型的内存大小)的整数倍 * ⚠结构体总大小为有效对齐值的整数倍 * 如果嵌套结构体,有效
自僱 5 分钟阅读
结构体、共同体和枚举 自僱
编程

结构体、共同体和枚举

结构体是用户自定义的数据类型,可以将多种数据合并描述一个对象。定义结构体的语法为`struct 结构体名 { 成员数据类型 成员名; ... };`。结构体成员可以是任意数据类型,并可包含函数。创建结构体变量时可赋初值,使用`.`或`->`访问成员。结构体支持动态内存分配,使用指针时需注意内存管理。结构体数组和嵌套结构体也被广泛使用。使用时需注意内存对齐和初始化。
自僱 10 分钟阅读