从c开始学c++
文章平均质量分 57
基于c语言学习c++,探讨差异
编程智界
分享 工作技巧 | 常用工具 | 提效神器 | 新奇事物
展开
-
【现代C++】范围库的应用
C++20引入了范围库(Ranges library),它是标准模板库(STL)的一个扩展,提供了一种新的方式来处理序列和范围。这个库允许开发者以更声明式的方式编写代码,使得操作序列变得更简洁、更易读。原创 2024-05-15 08:04:17 · 336 阅读 · 0 评论 -
【现代C++】概念的使用
你可以定义自己的概念,以表达更复杂的约束。requires Addable<T> // 使用自定义概念// 正确。原创 2024-05-15 08:03:47 · 183 阅读 · 0 评论 -
【现代C++】三路比较运算符
当默认生成的比较逻辑不符合需求时,你可以为三路比较运算符提供自定义实现。} else {原创 2024-05-15 08:03:28 · 208 阅读 · 0 评论 -
【现代C++】模块的使用
C++20引入了模块的概念,这是一个重要的新特性,旨在替代传统的预处理器和头文件机制。模块旨在提高编译速度、改善代码封装性、减少名称污染,并提供更好的工具支持。原创 2024-04-16 07:14:54 · 175 阅读 · 0 评论 -
【现代C++】编译时if的用法
现代C++(特别是C++17及其之后的版本)引入了编译时if(),这是一种在编译时进行条件判断的特性,主要用于模板编程中。允许编译器在编译时根据模板参数决定代码块是否编译,从而实现编译时的条件分支。这样可以减少模板实例化时不必要的编译分支,提高编译效率,减少编译产物大小。以下是。原创 2024-04-16 07:14:29 · 140 阅读 · 0 评论 -
【现代C++】内联变量的使用
在现代C++(C++17及以后的版本)中,内联变量提供了一种在头文件中声明和定义变量的能力,而不会引起重复定义的链接错误。这对于声明头文件中的常量、类的静态成员以及模板相关的静态数据成员特别有用。原创 2024-04-10 16:53:00 · 321 阅读 · 0 评论 -
【现代C++】显式虚函数重载
现代C++中的显式虚函数重载是通过override和final关键字实现的,这两个关键字提高了代码的清晰度和安全性。override确保子类中的函数确实重写了基类中的虚函数,而final则防止进一步的重写。这些关键字帮助捕获编程时的错误,如拼写错误或不匹配的函数签名。原创 2024-04-10 16:52:47 · 184 阅读 · 0 评论 -
【现代C++】属性关键字
现代C++引入了属性关键字,旨在为编译器提供更多的信息,以便进行优化或发出警告和错误。这些属性关键字不改变程序的逻辑,但它们对于提高代码的可读性、维护性和性能非常有用。原创 2024-04-10 16:52:19 · 143 阅读 · 0 评论 -
【现代C++】结构化绑定
现代C++(特别是C++17及以后的版本)引入了结构化绑定(Structured Bindings),这是一种从元组、结构体或数组中一次性解构并初始化多个变量的语法。结构化绑定使得代码更简洁且易于阅读。原创 2024-04-10 16:52:05 · 205 阅读 · 0 评论 -
【现代C++】线程支持库
现代C++(C++11及其之后的版本)引入了标准的线程支持库,使得多线程编程变得更加简单和可移植。这个库提供了线程管理、互斥量、条件变量和其他同步原语。原创 2024-04-10 16:51:14 · 190 阅读 · 0 评论 -
【现代C++】默认函数和删除函数
现代C++中的默认函数和删除函数特性允许开发者更精确地控制类的行为,特别是关于对象拷贝、赋值、析构和构造的行为。这些特性可以帮助开发者避免不必要的对象拷贝,防止资源泄露,以及避免一些常见的编程错误。原创 2024-04-10 16:50:59 · 315 阅读 · 0 评论 -
【现代C++】constexpr用法
现代C++中的constexpr关键字允许在编译时进行表达式求值,从而提高程序的性能和安全性。这项特性自C++11引入,并在后续的C++14和C++17标准中得到增强。以下是constexpr。原创 2024-04-10 16:50:46 · 369 阅读 · 0 评论 -
【现代C++】模板增强
现代C++(特别是从C++11开始)为模板编程引入了许多增强功能,这些增强大大提高了模板的表达力和灵活性。原创 2024-04-10 16:50:18 · 347 阅读 · 0 评论 -
C++中的decltype关键字
C++中的decltype关键字是C++11中引入的一个关键字,用于查询表达式的类型。它非常有用,尤其是在模板编程和类型推导的上下文中。原创 2024-04-10 16:50:03 · 271 阅读 · 0 评论 -
【现代C++】委托构造函数
现代C++中的委托构造函数(Delegating Constructors)是C++11引入的特性,它允许一个构造函数调用同一个类中的另一个构造函数,以避免代码重复。这种特性在初始化对象时提高了代码的复用性和清晰性。原创 2024-04-03 14:48:54 · 288 阅读 · 0 评论 -
【现代C++】std::initializer_list用法
可以在自定义类型的构造函数中使用来接收多个初始值。原创 2024-03-27 18:27:43 · 422 阅读 · 0 评论 -
C++中的枚举类型
C++中的enum(枚举)类型是一种用户定义的类型,用于表示一组整数值,每个值都有对应的名称,增强了代码的可读性和可维护性。原创 2024-03-25 15:25:16 · 494 阅读 · 0 评论 -
【现代C++】可变参数模板
现代C++中的可变参数模板是C++11引入的一个功能,允许模板接受可变数量的参数,使得模板编程更加灵活和强大。原创 2024-03-24 22:58:41 · 302 阅读 · 0 评论 -
【现代C++】nullptr用法
在C++11之前,NULL被用来表示空指针,但它只是一个宏,定义为0或((void*)0),这在某些情况下可能会导致类型混淆和错误。为了解决这些问题,C++11引入了nullptr关键字,它是一种特殊的空指针字面量,具有自己的类型nullptr_t,可以自动转换为任何指针类型,但不会转换为非指针类型。原创 2024-03-23 18:22:14 · 421 阅读 · 0 评论 -
【现代C++】范围基于的for循环
现代C++中的范围基于的for循环(range-based for loop)是C++11引入的一项特性,旨在简化对容器或范围的迭代过程。这种循环语法不仅使代码更清晰易读,还减少了迭代时的错误。原创 2024-03-22 07:05:20 · 327 阅读 · 0 评论 -
C++中的explicit关键字详解
在C++中,explicit关键字用于防止类构造函数、转换运算符或其他函数的隐式自动转换。使用explicit可以提高代码的可读性和健壮性,避免意外的类型转换导致的错误。以下是关于explicit关键字的详细介绍和示例。原创 2024-03-21 07:33:03 · 2217 阅读 · 0 评论 -
【现代C++】统一初始化
对于自定义类型,统一初始化提供了一种清晰的方式来初始化对象。double y;原创 2024-03-20 07:40:21 · 665 阅读 · 0 评论 -
C++中的作用域解析运算符
我们可以在类外部定义成员函数,这时需要使用来指定这个函数属于哪个类。原创 2024-03-19 07:50:04 · 366 阅读 · 0 评论 -
【现代C++】explicit用法
在现代C++中,explicit关键字主要用来防止构造函数的隐式类型转换。在C++11及以后的版本中,explicit关键字的用途得到了扩展,允许用于修饰接受一个以上参数的构造函数。这样做可以防止编译器自动执行不期望的类型转换,增加代码的安全性和可读性。原创 2024-03-18 07:40:27 · 474 阅读 · 0 评论 -
C++中的using关键字
关键字可以将命名空间中的单个成员或整个命名空间导入到当前作用域,减少代码的冗余。关键字可以用来为类型创建一个新的名字,这在代码的可读性和维护性方面非常有帮助。关键字能够为模板定义一个新的别名,使得模板的实例化更加简洁。如果你正在使用一个非常长的命名空间,可以使用。为其定义一个别名,简化代码。原创 2024-03-17 14:54:28 · 1076 阅读 · 0 评论 -
C++中的struct与class详解
在C++中,struct和class都是用户定义类型(UDT)的关键字,用于封装数据和函数。尽管它们在许多方面都非常相似,但也存在一些关键差异。原创 2024-03-17 13:50:48 · 500 阅读 · 0 评论 -
C++中的Union: 内存与类型转换技巧
union定义了一个可以存储多种类型但任意时刻只能存储其中一种类型的数据结构。union的大小至少是其成员中最大类型的大小。原创 2024-03-17 13:49:45 · 822 阅读 · 0 评论 -
【现代C++】移动语义和右值引用
自定义类型可以通过实现移动构造函数和移动赋值运算符来利用移动语义。public:// 移动构造函数// 移动赋值运算符if (this!// 普通构造函数//移动构造函数。原创 2024-03-17 11:52:31 · 395 阅读 · 0 评论 -
【现代C++】智能指针
智能指针允许你指定自定义删除器,这在管理非内存资源时非常有用。std::cout << "自定义删除器释放内存" << std::endl;delete ptr;原创 2024-03-17 11:23:44 · 310 阅读 · 0 评论 -
【现代C++】auto关键字
自C++11起,auto关键字允许编译器自动推导变量的类型,这简化了代码编写,特别是在处理复杂类型时。以下是auto。原创 2024-03-17 10:43:47 · 464 阅读 · 0 评论 -
C++中的friend关键字
是一种破坏封装的做法,但在某些情况下,它提供了必要的灵活性。关键字允许其他类或函数访问私有和受保护成员。原创 2024-03-17 09:18:40 · 470 阅读 · 0 评论 -
C++中的assert功能详解
可以使用宏定义来启用或禁用assert。如果定义了宏NDEBUG,则所有的assert调用都将无效,即不执行任何检查。#define NDEBUG // 禁用assert// 示例代码// 如果NDEBUG被定义,这将不会执行任何操作// 其他逻辑...在发布版本的软件中,通常会定义NDEBUG来禁用assert,以避免对性能的影响。原创 2024-03-15 08:26:26 · 1872 阅读 · 0 评论 -
C++中的Volatile:硬件、多线程与优化指南
虽然volatile关键字在特定场景下非常有用,但应该谨慎使用,并且了解其真正意图和限制。对于现代C++并发编程,建议使用标准库提供的并发机制,如和std::mutex,这些机制提供了对内存操作的更完整和更安全的控制。原创 2024-03-14 17:00:17 · 416 阅读 · 1 评论 -
c++中的virtual关键字
动态绑定是指在程序运行时而不是在编译时决定调用哪个函数的机制。当使用指针或引用调用虚函数时,会根据对象的实际类型来调用相应的函数。: 由于Vtable是由编译器自动管理的,没有直接的示例代码展示Vtable。当类使用虚函数时,编译器会为该类创建一个虚函数表(Vtable),其中包含指向类的虚函数的指针。如果一个类是用作基类的,它的析构函数应该是虚的。这确保了通过基类指针删除派生类对象时,对象的析构过程是正确的。)可以使类成为抽象类。关键字用于声明在基类中的函数为虚函数,允许在派生类中被重写,以实现多态性。原创 2024-03-14 16:38:18 · 433 阅读 · 1 评论 -
深入解析C++虚函数表(vtable)和虚指针(vptr)
在C++中,虚函数表(vtable)和虚指针(vptr)是实现多态性的关键机制。原创 2024-03-14 08:16:10 · 2183 阅读 · 1 评论 -
C++ 函数指针:解锁编程的无限可能性
函数指针是指向函数的指针。它用于存储函数的地址,可以像调用普通函数一样通过函数指针调用函数。函数指针可以作为参数传递给其他函数,这使得回调函数和函数的高级抽象成为可能。函数指针数组是存储多个函数指针的数组。这在实现函数查表特别有用。函数指针也可以作为函数的返回值。这允许根据条件返回不同的函数。关键字可以用来简化函数指针的声明,使其更易于阅读和使用。原创 2024-03-14 08:08:04 · 537 阅读 · 1 评论 -
深入理解 C++ 中的 sizeof 操作符
sizeof操作符在 C++ 中是一个极其有用的工具,它提供了对数据类型占用内存大小的直接了解。下面我们将详细介绍sizeof的几个关键用法,并且提供示例代码。原创 2024-03-13 18:30:09 · 339 阅读 · 0 评论 -
如何让C++与C语言无缝对话?
•背景说明:在混合编程时,可能需要在 C++ 中定义一些函数,让 C 代码调用。•使用extern "C"的目的:保证 C++ 中定义的函数,能够被 C 代码按照 C 的链接规范调用。•示例代码// 函数实现。原创 2024-03-13 18:21:12 · 482 阅读 · 1 评论 -
C++中的引用与指针
引用必须在定义时被初始化,一旦初始化后,就不能改变引用的关联。: 指针可以被重新指向其他对象,而引用一旦绑定某个对象后不能改变。: 引用是某个变量的别名,通过引用可以直接访问或修改该变量的值。: 引用在使用时不需要解引用操作符(*),而指针需要。: 函数可以返回变量的引用,使得可以直接修改该变量。: 常用于函数参数传递,使得可以直接修改实参的值。: 指针用于复杂的数据结构,如数组指针和指针数组。: 指针是一个变量,其值为另一个变量的地址。: 指针可以被重新赋值以指向不同的对象。3. 引用与指针的区别。原创 2024-03-13 18:06:54 · 348 阅读 · 0 评论 -
c++中的this指针
this 指针在 C++ 中是一个重要的概念,它提供了一种方法来引用调用成员函数的当前对象。它主要用于访问对象的成员变量和函数、实现链式调用、比较对象、作为函数参数以及在返回类型中返回对象自身的引用或指针。this 指针是 C++ 中一个特殊的指针,它指向当前对象的地址。它是成员函数中隐式可用的,用于访问调用它的对象的成员。在成员函数中,this 指针可以用来返回当前对象的引用或指针,特别是在操作符重载中常见。// 返回当前对象的引用。this 指针可以用于返回当前对象的引用,从而实现方法的链式调用。原创 2024-03-12 08:33:46 · 328 阅读 · 1 评论