那些影视解析网站怎么做的,福山区建设工程质量检测站网站,可以查各种资料的app,网站建设文案详情1. C 中 struct 和 class 的区别是什么#xff1f;在C中#xff0c;struct 和class的主要区别就在于它们的默认访问级别:struct的默认成员访问级别是public。class的默认成员访问级别是private。2. C 中 struct 和 union 的区别#xff1f;如何使用 union 做优化#xff1f…1. C 中 struct 和 class 的区别是什么在C中struct和class的主要区别就在于它们的默认访问级别:struct的默认成员访问级别是public。class的默认成员访问级别是private。2. C 中 struct 和 union 的区别如何使用 union 做优化struct和union二者有以下主要区别:存储方式struct中的所有成员变量各自占据独立的内存空间而union中的所有成员变量共用同一块内存空间且大小是最大成员的大小。访问方式struct的所有成员变量可以同时存在并被访问而union每次只能有一个成员变量有效如果在一个成员值改变后访问另一个成员结果不可预知。用途struct一般用于逻辑上关联的不同数据存储而union通常用于节省内存空间作为一个优化项使用。例如在嵌入式系统或资源有限的场景中。通过让变量共用内存可以减少内存消耗。很多底层库为了性能极致也会使用union我们如果开发业务层代码建议直接使用struct好用且不容易出bug。3. C 中 using 和 typedef 的区别using在 C11 中引|入using和typedef都可以用来为已有的类型定义一个新的名称。最主要的区别在于using可以用来定义模板别名而typedef不能。1. typedef主要用于给类型定义别名但是它不能用于模板别名。typedef unsigned long ulong; typedef int (*FuncPtr)(double);2. using可以取代typedef的功能语法相对简洁。using ulong unsigned long; using FuncPtr int (*)(double);3. 对于模版别名using显得非常强大且直观。templatetypename T using Vec std::vectorT;总之更推荐使用using尤其是当你处理模版的时候。4. C 中 enum 和 enum class 的区别在C中enum和enum class(也叫做强类型枚举)主要的区别在于作用域和类型安全。1. 作用域:enum枚举成员是直接进入包含它的作用域也就是说在定义枚举后你可以直接使用枚举成员而不需要前缀。enum class枚举成员只能通过显式地指定它们的枚举类型来访问(即使用枚举名作为前缀类似于作用域解析)。2. 类型安全:enum传统枚举类型不安全枚举成员会隐式转换为整数类型。enum class强类型枚举是类型安全的不能隐式转换为其他类型必须显式转换。举个例子// 传统枚举 enum Color { RED, GREEN, BLUE }; // 强类型枚举 enum class ColorClass { RED, GREEN, BLUE }; // 使用示例 int main() { // 对于传统枚举 Color c RED; // 直接访问不需要前缀 int value GREEN; // 可能的隐式转换 // 对于强类型枚举 ColorClass cc ColorClass::RED; // 需要前缀 // int value ColorClass::GREEN; // 错误不能隐式转换需要显式转换 return 0; }5. C 中 new 和 malloc 的区别delete 和 free 的区别在C中new和malloc以及delete和free是内存管理的两对主要操作符和函数。它们虽然都有分配和释放内存的功能但在很多方面都有区别。1. newVSmalloc:new是C的操作符而malloc是 C 标准库的函数。new分配内存并调用构造函数而malloc仅仅分配内存不调用构造函数。new返回一个类型安全的指针malloc返回而void*需要显式类型转换。new在分配失败时抛出std::bad_alloc异常而malloc 返回NULL。2. deleteVSfree:delete是 C 的操作符而free是C标准库的函数。delete销毁对象并调用析构函数然后释放内存而free仅仅释放内存不调用析构函数。delete必须与new配对使用而free必须与malloc配对使用。delete和delete[]是不同的前者用于单一对象后者用于数组。free没有这种区分。6. C 中类定义中 delete 关键字和 default 关键字的作用两者都用于控制类的行为。1. delete关键字用来禁用某些默认的成员函数。主要的作用就是禁用拷贝构造函数和拷贝赋值运算符如下例:class MyClass { public: MyClass() default; // 使用默认构造函数 MyClass(const MyClass) delete; // 禁用拷贝构造函数 MyClass operator(const MyClass) delete; // 禁用拷贝赋值运算符 };2. default关键字用于显式地指示编译器为某个成员函数生成默认的实现。它经常用在构造函数、析构函数以及拷贝构造函数上。class MyClass { public: MyClass() default; // 使用默认构造函数 ~MyClass() default; // 使用默认析构函数 MyClass(const MyClass) default; // 使用默认拷贝构造函数 MyClass operator(const MyClass) default; // 使用默认拷贝赋值运算符 };7. C 中 this 指针的作用this指针是一个隐含在每一个非静态成员函数中的指针。它指向的是调用成员函数的那个对象的地址。主要作用包括:访问类的成员变量和成员函数特别是当局部变量与成员变量同名时用this指针可以明确的区分出来。链式调用可以通过返回*this来支持链式调用。动态绑定在基类指针或引用调用派生类对象时利用this指针可以直观的实现动态绑定。8. C 中 可以使用 delete this吗可以使用delete this但是必须非常谨慎因为滥用可能会导致未定义行为。delete this的主要作用是允许对象在其成员函数中自行销毁。但这对程序员的要求很高你需要明确知道这会产生什么样的影响。一般建议普通开发者不要使用delete this因为日常业务开发中几乎不需要这样使用。起码笔者十数年的编程生涯中只见过标准库中这样使用自己编写业务代码时还没有这样使用过。9. C 中 vector 的原理resize 和 reverse 的区别是什么 size和 capacity 的区别vector是一个动态数组它可以根据需要进行自动伸缩。这里的关键词是动态数组动态两字很关键。内部实现上vector通过一个指向连续内存的指针来管理对应元素并根据需要动态扩容分配内存来满足容量需求。1. resize和reserve的区别:resize(n)调整vector的大小为n。如果n大于当前大小会向vector末尾添加值初始化的新元素如果n小于当前大小会删除超出部分的元素。如果n大于capacity会自动扩容满足容量需求。reserve(n):预分配内存确保vector可以存储n个元素但不改变vector的当前大小。适用于在已知将要添加大量元素的情况下进行预分配以避免频繁重新分配内存。2. size和capacity的区别:sizevector中当前包含的元素数量。上面的resize(n)会改变size大小。capacityvector当前分配的内存能够容纳的最大元素数量。上面的reserve(n)会改变capacity大小。