
C++从入门到精通
文章平均质量分 96
C++是一门强大的编程语言,适合初学者和有经验的程序员。学习C++需要掌握基础知识,如变量、数据类型、控制结构等。随着学习的深入,需要了解面向对象编程的概念,如类、对象、继承、多态等。此外,还需要学习C++的标准库和STL库,以便更高效地进行编程。在学习过程中,需要多做练习,掌握常用算法和数据结构
鲜于言悠905
商务合作(微信:f1985954492 邮箱:1985954492@qq.com),阿里云专家博主,主要学习c/c++方向,也会了解一些JAVA,Python-数据分析
展开
-
vector介绍与使用【C++】
C++中的vector是一个动态数组,它可以根据需要自动调整大小。它存储在连续的内存块中,提供了快速的随机访问和插入操作,但删除操作可能导致内存的移动。vector是STL(标准模板库)的一部分,可以容纳任何类型的元素,包括内置类型和用户定义的类型。使用vector时,需要包含头文件,并通过std命名空间访问。vector还提供了许多成员函数,如pop_back()size()等,以支持各种操作。c++文档vector是表示可变大小数组的序列容器。就像数组一样,vector。原创 2024-05-08 06:00:00 · 957 阅读 · 26 评论 -
string类的介绍与使用【C++】
string类是编程语言中用于表示和操作字符串的基本数据类型或类。它提供了一系列方法和操作,允许开发者对字符串进行创建、修改、查找、比较、转换等。string类通常具有不可变性,意味着一旦创建了字符串对象,其内容就不能被修改,但可以创建新的字符串对象来表示修改后的内容。这种特性有助于在多线程环境中保持数据的安全性。string类还提供了各种构造函数、操作符重载和格式化功能,使字符串操作更加灵活和高效。原创 2024-05-12 21:48:22 · 3297 阅读 · 81 评论 -
通过一篇文章让你了解STL是什么
STL(Standard Template Library)是C++编程语言的一个标准库,包含了一系列模板类和函数,用于实现常见的数据结构和算法。它分为容器(Containers)、迭代器(Iterators)、算法(Algorithms)和配接器(Adapters)四个部分。STL的目的是提供高效、灵活、可复用的代码,以便快速构建高质量的C++程序。通过使用STL,程序员可以避免重新发明轮子,提高代码的可读性和可维护性。原创 2024-05-05 21:16:19 · 1411 阅读 · 40 评论 -
C++模板详解
如何实现一个通用的交换函数呢?......重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数代码的可维护性比较低,一个出错可能所有的重载均出错那能否告诉编译器一个模子,让编译器根据不同的类型利用该模子来生成代码呢?如果在C++中,也能够存在这样一个模具,通过给这个模具中填充不同材料(类型),来获得不同材料的铸件(即生成具体类型的代码),那将会节省许多头发。巧的是前人早已将树栽好,我们只需在此乘凉。原创 2024-05-05 21:16:03 · 2036 阅读 · 25 评论 -
深度剖析C++的new、delete和placement new
如果申请的是内置类型的空间,new和mallocdelete和freenew/delete申请和释放的是单个元素的空间,new[]和delete[]申请的是连续空间,而且new在申请空间失败时会抛异常,malloc会返回NULL。调用函数申请空间在申请的空间上执行构造函数,完成对象的构造什么是内存泄漏:内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。原创 2024-05-05 21:15:52 · 1578 阅读 · 9 评论 -
C++动态内存管理
C++动态内存管理涉及使用new和delete操作符来动态分配和释放堆内存。new用于在堆上分配内存并初始化对象,delete用于释放先前分配的内存。此外,C++还提供了智能指针如和来自动管理内存,以避免内存泄漏和悬挂指针。这些智能指针在超出作用域时会自动删除其所指向的对象。int main()原创 2024-04-21 09:43:21 · 1246 阅读 · 2 评论 -
C++的内部类和匿名类
内部类是定义在另一个类内部的类,它可以访问外部类的私有成员。匿名类是没有名字的类,通常用于一次性使用的简单对象创建,可以直接在需要使用的地方定义,并传递给其他方法。内部类和匿名类都是C++等编程语言的重要特性,它们可以简化代码结构,提高代码重用性。生命周期即在当前作用域下,即用即销毁通过匿名对象可以简化代码。原创 2024-04-20 14:35:25 · 1796 阅读 · 11 评论 -
C++实战——日期类的实现
日期类是指处理日期和时间相关操作的编程类库或对象。它提供了创建、解析、比较、格式化日期和时间等功能,方便开发者在程序中处理与时间相关的逻辑。日期类通常包括年、月、日、时、分、秒等属性,并允许进行各种日期时间的计算和操作,如加减天数、获取星期几、判断是否为闰年等。通过使用日期类,开发者可以更加高效、准确地处理时间相关的数据。原创 2024-04-20 11:08:17 · 1360 阅读 · 6 评论 -
C++从入门到精通——友元
友元提供了一种突破封装的方式,有时提供了便利。但是友元会增加耦合度,破坏了封装,所以友元不宜多用。友元分为:友元函数和友元类友元函数可访问类的私有和保护成员,但不是类的成员函数友元函数不能用const修饰友元函数可以在类定义的任何地方声明,不受类访问限定符限制一个函数可以是多个类的友元函数友元函数的调用与普通函数的调用原理相同友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员。友元关系是单向的,不具有交换性。比如上述Time类和Date类,在Time。原创 2024-04-18 16:05:25 · 1001 阅读 · 31 评论 -
C++的static成员
声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。静态成员变量一定要在类外进行初始化。静态成员是指属于类而不属于类的任何对象的成员。静态成员在类的所有对象之间共享,并且可以在不创建对象的情况下被访问。静态成员包括静态变量和静态方法。静态变量是类的所有对象之间共享的变量。它们在内存中只有一份拷贝,并且可以直接通过类名访问。静态变量在类的任何对象被创建之前就被初始化,它们的值在所有对象之间是一致的。原创 2024-04-17 20:48:55 · 1620 阅读 · 32 评论 -
C++的const与取地址重载
类的6个默认成员函数:如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。权限缩小可以,权限放大不可以,即被const修饰的是可读的,不被修饰的是可读可写的,不被修饰的可以访问被修饰的。原创 2024-04-17 20:30:50 · 1520 阅读 · 25 评论 -
C++赋值运算符重载
类的6个默认成员函数:如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。C++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。函数名字为:关键字operator后面接需要重载的运算符符号。函数原型:返回值类型operator。原创 2024-04-16 13:55:10 · 1010 阅读 · 43 评论 -
C++的拷贝构造函数
类的6个默认成员函数:如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。原创 2024-04-15 13:39:19 · 1357 阅读 · 37 评论 -
C++析构函数
类的6个默认成员函数:如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。原创 2024-04-15 07:00:00 · 1973 阅读 · 31 评论 -
C++构造函数
类的6个默认成员函数:如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。原创 2024-04-08 12:29:56 · 994 阅读 · 24 评论 -
C++的this指针
this指针是一个特殊的指针,在C++类的成员函数中使用。它指向调用该成员函数的对象的地址。通过使用this指针,成员函数可以访问和修改调用它的对象的属性和其他成员函数。这种机制使得成员函数能够识别和操作其所属的对象,从而实现了面向对象编程中的封装性和数据隐藏。原创 2024-04-08 08:04:23 · 1508 阅读 · 2 评论 -
C++类对象模型
类对象模型是一种编程概念,用于描述和实现面向对象编程(OOP)中的类和对象。在这个模型中,类定义了对象的结构和行为,包括数据成员(属性)和成员函数(方法)。对象是类的实例,具有类的所有属性和方法。类对象模型支持封装、继承和多态等OOP特性,使得代码更加模块化、可重用和易于维护。通过类对象模型,程序员可以创建复杂的软件系统,提高开发效率和代码质量。类对象的存储方式是按照只保存成员变量,成员函数存放在公共的代码段一个类的大小,实际就是该类中”成员变量”之和,须要注意内存对齐。原创 2024-04-07 15:50:29 · 1476 阅读 · 40 评论 -
C++从入门到精通——类的作用域及类的实例化
类的作用域是指类中定义的变量和方法的可见性和可访问性范围。在类的内部,所有成员(包括属性和方法)都具有类作用域,意味着它们可以在类的任何方法中被访问。然而,类的外部无法直接访问这些成员,除非通过类的实例或类本身(对于静态成员)。类的成员可以被设置为公有(public)、私有(private)或受保护的(protected),以控制其在不同上下文中的可见性和可访问性。这种作用域的控制有助于封装和隐藏类的实现细节,同时提供清晰的接口供外部使用。类的实例化是指创建一个类的具体对象的过程。原创 2024-04-07 15:06:51 · 1791 阅读 · 25 评论 -
C++类的定义及类的访问限定符和封装
类的定义是面向对象编程中的基本概念,它描述了一类具有相同属性和方法的对象的抽象模板。类定义了对象的结构和行为,包括数据成员(属性)和成员函数(方法)。通过类,可以创建多个具有相同属性和方法的对象实例,从而实现代码的复用和模块化。类的定义通常包括类名、数据成员和成员函数的声明,以及可能的访问控制修饰符来指定成员的访问权限。访问限定符用于控制类成员的访问权限,如private、protected和public等,它们决定了哪些代码可以访问类的属性和方法。原创 2024-04-06 21:51:26 · 1863 阅读 · 31 评论 -
初步认识C++面向对象和类
面向过程注重任务的流程和控制,适合简单任务和流程固定的场景;而面向对象则将数据和功能封装成对象,通过对象间的交互实现复杂功能,更适用于大型、复杂的软件系统开发。类的引入是面向对象编程中的一个核心概念。通过类,我们可以创建具有相同属性和行为的对象,从而实现代码的重用和模块化。类定义了对象的结构和行为,包括对象的属性(数据成员)和方法(成员函数)。通过实例化类,我们可以创建对象,并赋予它们特定的属性值。这样,每个对象都具有独特的身份,但仍然共享类的定义和行为。原创 2024-04-06 20:56:02 · 1567 阅读 · 23 评论 -
C++的nullptr
nullptr是C++11引入的一个新特性,用于表示空指针。它提供了一种类型安全的方式来区分空指针和非空指针,避免了传统空指针(如NULL或0)可能导致的类型不匹配问题。使用nullptr可以提高代码的可读性和安全性。同时,nullptr还可以与C++的智能指针(如等)一起使用,更好地管理动态分配的内存。使用nullptr定义空指针可以提高代码的可读性和安全性,因为它明确表明了指针的空值,避免了可能导致错误的类型转换。原创 2024-04-02 14:48:02 · 1441 阅读 · 47 评论 -
C++范围for的使用
范围for循环(也称为C++11的基于范围的for循环)是一种简化迭代容器(如数组、向量、列表等)元素的方式。它允许你遍历容器中的每个元素而无需显式地使用迭代器或索引。for (元素类型 元素变量 : 容器) { // 循环体 }。这种循环内部隐式使用迭代器来遍历容器,使得代码更简洁易读。但需要注意的是,范围for循环不适用于需要修改容器大小或结构的场景,因为它不提供对迭代器的直接访问。原创 2024-04-02 14:37:56 · 1856 阅读 · 31 评论 -
C++auto的使用
C++的auto关键字用于自动推导变量的类型,让编译器根据变量的初始化表达式来确定其类型。使用auto可以简化代码,并且可以在某些情况下提高代码的可读性和灵活性。使用auto声明变量时,变量的类型将根据初始化表达式的类型进行推导。// x的类型将被推导为int// y的类型将被推导为double// z的类型将被推导为const char*auto也可以和引用一起使用,用于自动推导引用的类型。// ref的类型将被推导为int&auto还可以与模板一起使用,用于自动推导模板类型。原创 2024-04-01 19:58:46 · 7938 阅读 · 27 评论 -
C++内联函数
内联函数是一种优化手段,通过在编译时将函数调用替换为函数体本身的复制品,以减少函数调用的开销。它适用于函数体较小、调用频繁的情况。使用内联函数可以提高程序执行效率,但也会增加最终生成的代码大小。在C++中,可以使用inline关键字声明内联函数。然而,编译器对于是否真正内联一个函数有最终决定权,即使函数被声明为内联,编译器也可以选择不进行内联。原创 2024-04-01 16:34:07 · 1182 阅读 · 26 评论 -
C++的引用
C++的引用是别名,它为已存在的对象提供了另一个名称。一旦引用被初始化指向一个对象,它就不能再指向其他对象。引用必须在声明时初始化,并且必须初始化为有效的对象或字面量。引用通常用于函数参数和返回值,以实现按引用传递和返回。此外,它们也常用于大型对象和数组,以避免复制的开销。C++11引入了右值引用和移动语义,允许更高效的资源管理和性能优化。总的来说,C++的引用是一种强大的工具,能够增强代码的可读性和性能。原创 2024-03-31 21:27:12 · 1636 阅读 · 17 评论 -
C++的函数重载
函数重载是指在同一个作用域内,可以定义多个名称相同但参数列表不同的函数。这些函数具有不同的参数个数、类型或顺序,以便编译器能够根据传入的参数来确定调用哪个函数。函数重载使得代码更加简洁,避免了命名上的冗余,并提高了代码的可读性和可维护性。通过重载,我们可以为不同的操作或数据类型提供统一的接口,使得函数的使用更加灵活和方便。原创 2024-03-29 15:59:09 · 1957 阅读 · 51 评论 -
C++的缺省参数
缺省参数是在函数定义时指定的默认值,当调用函数时未提供该参数的值时,将使用缺省值。使用缺省参数可以简化函数调用,提高代码可读性。但需注意,过多使用缺省参数可能导致代码难以理解和维护。原创 2024-03-29 14:26:40 · 1343 阅读 · 31 评论 -
C++输入和输出
C++中的输入和输出主要通过标准库中的iostream类实现。使用cin对象从标准输入(如键盘)读取数据,使用cout对象将数据写入标准输出(如屏幕)。原创 2024-03-28 21:19:05 · 4776 阅读 · 35 评论 -
C++的命名空间
命名空间是一种用于封装和组织代码的结构,可以避免名称冲突并提供更好的代码组织性。在编程中,命名空间通常用于将相关的类、函数、变量等组织在一起,形成一个独立的逻辑单元。通过使用命名空间,可以更加清晰地组织代码,提高代码的可读性和可维护性。同时,命名空间也可以用于控制访问权限,保护代码的安全性和稳定性。因此,在编程中,合理地使用命名空间是一种重要的编程实践。命名空间顾名思义就是通过定义一个空间来封装变量,函数,是一种用来给变量和函数等标识符起一个独特且有组织的名称的机制。原创 2024-03-28 19:56:56 · 1699 阅读 · 26 评论 -
通过一篇文章让你了解如何学习C++
学习C++需要掌握其基础语法、指针和内存管理、STL库使用、面向对象编程等核心概念。可通过阅读权威书籍、在线教程和参考官方文档来系统学习。实践是关键,通过编写小程序练习基础语法,逐渐尝试复杂项目以加深理解。遇到问题时,利用社区论坛、问答网站等资源寻求解答,也可通过调试和错误排查锻炼问题解决能力。持续学习和实践,结合项目需求深入学习特定领域的知识,如游戏开发、性能优化等。保持耐心和毅力,不断积累经验,逐步提升编程技能。C++不仅仅是一门语言,更是一种生活哲学,在以后的工作之余还需要大家继续挖掘……原创 2024-03-27 16:04:01 · 1493 阅读 · 14 评论 -
通过一篇文章让你了解C++是什么
C++是一种编程语言,它在20世纪80年代作为C语言的扩展而开发出来。它是一种编译型语言,这意味着用C++编写的程序在执行之前会被翻译成机器码。C++以其高效性和性能而闻名,因此在需要速度快的系统编程和其他应用程序中很受欢迎。它还支持面向对象编程,允许创建类和对象以组织和结构化代码。C++具有庞大的标准库,其中包含各种函数和类,用于各种编程任务,例如输入/输出操作、字符串操作和数学计算。除了标准库之外,C++还支持使用外部库,允许开发人员利用现有的代码和资源来增强他们的程序。原创 2024-03-27 15:40:38 · 1133 阅读 · 0 评论