C++学习
文章平均质量分 93
YKPG
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++学习-入门到精通【19】杂项汇总
运算符可以强制去除和的限定,使得一个声明为const的变量可以被修改。注意,使用该运算符是一件危险的事,应该明确程序的确需要修改一个常变量的功能才使用它。该运算符并不会进行任何检查。这里我们对比之前我们用到过的其他的一些强制转换运算符:、和。的工作是在编译时进行相关类型间的安全转换,同样也可以用于向下转换,但是安全必须由程序员来保证(也就是不进行运行时类型检查);的核心工作是在运行时进行多态类型的安全向下转换。会进行运行时类型检查,被转换的对象是否与要转换的目标类型相同,如果相同继续转换,不同则返回一个空原创 2025-06-12 23:03:36 · 949 阅读 · 0 评论 -
C++-入门到精通【18】string类和字符串流处理的深入剖析
我们通过头文件<string>来定义的string类型的变量,其实一个类模板特化的对象。类模板定义在头文件<string>中,并在命名空间std中使用typedef或using声明为设置一个别名string所以我们才可以用关键字string来声明一个字符串对象。初始化string对象与是等价的,后者并不是一个赋值操作,而是会隐式的调用拷贝构造函数进行对象初始化的过程。这里的初始化和赋值的意义并不相同,初始化是在对象创建过程中进行资源的分配,如果初始化失败,则这个对象不存在。原创 2025-06-12 12:37:46 · 1324 阅读 · 0 评论 -
C++学习-入门到精通【17】自定义的模板化数据结构
本文中详细介绍了类模板的从属名称,以及讨论了在模板编程中什么情况下,需要显式的指明一个标识符是从属名称,以及从属名称到底有什么用,是因为什么出现的。原创 2025-06-10 21:07:24 · 1651 阅读 · 1 评论 -
C++学习-入门到精通【16】自定义模板的介绍
在前面的学习中我们使用了不少的标准库中预先封装好的模板化的容器和算法。和使程序员可以非常方便地表示若干不同的相关(重载)的函数或者类,这样的函数被称为,而类被称为。这种产生函数和类的技术称为。可以将函数模板和类模板比作一个棕子,而棕子内部可以有不同的馅料,虽然使用这个模板做出来的都是相同外形(功能相同),但是里面的口味却不同(操作对象不同)。类模板也被称为,因为它们需要一个或多个参数,来说明如何自定义一个用于产生类模板特化的通用类模板。只要定义了一个类模板,当需要一个特定的类模板特化时,我们可以非常简单得到原创 2025-06-07 23:16:54 · 866 阅读 · 0 评论 -
C++学习-入门到精通【15】异常处理深入剖析
下面代码中我们定义类,该类是标准库(在头文件中定义)的一个派生类。类是标准库exception类(在头文件)的派生类,它是C++用于描述运行时错误所创建的标准基类。而类exception是C++标准库中描述所有异常而建立的标准基类。一个从类派生出来的典型异常类只定义了一个构造函数,这个构造函数将带有错误信息的字符串传递给基类runtime_error的构造函数。所有的异常类都直接或间接地从含有虚函数what的exception类派生而来,而what函数返回一个异常对象的错误信息。原创 2025-06-07 15:12:35 · 1132 阅读 · 0 评论 -
C++学习-入门到精通【14】标准库算法
对于标准模板库中提供的算法,它们提供了实现一种功能的通用方法,所以算法只是将功能抽象出来,使得不同的容器只要能够满足最低的迭代器要求,那么就可以使用相同的算法来实现相同的功能,即使它们容器内部中要实现该功能的函数其实不一样。对于STL中的容器、算法和迭代器这三个主要组件,容器规定数据的存储结构以及对这些数据的一些操作方法,算法定制了通用功能的实现,而算法通过迭代器来访问容器中的数据,使得定制的功能能够在对应容器中被执行。原创 2025-06-05 22:27:17 · 1643 阅读 · 0 评论 -
C++学习-入门到精通【13】标准库的容器和迭代器
STL(Standard Template Library)定义了强大的、基于模板的、可复用的组件,实现了许多通用的数据结构及处理这些数据结构的算法。容器、迭代器和算法本章中将介绍STL,并且将讨论它的三个关键组件——容器(container,流行的模板数据结构)、迭代器(iterator)和算法STL容器是能存放几乎所有类型的数据的数据结构。各容器中共同的成员函数每个STL容器都有相关的成员函数,这些成员函数的一个子集在所有的STL容器中都有定义。迭代器STL迭代器和指针有着类似的属性,它们。原创 2025-06-03 22:33:41 · 1413 阅读 · 0 评论 -
C++学习-入门到精通【12】文件处理
所谓序列化的对象,是指一个字节序列表示的对象,这个序列不仅包含这个对象的数据,它也包含有关对象类型和对象中存储的数据的类型信息。注意必须使二进制模式打开文件,这是因为文件中是没有结构的,我们是通过在内存中的设计结构,然后将存储为这种结构的数据存储到文件中,下次读取时,这些数据仍能还原成这种结构。下面的程序可以显示相关贷款信息,包括余额为0的客户(不欠公司任何钱的客户)、贷款余额为负的客户(向公司提供贷款的客户)和贷款余额为正的客户(使用公司提供的服务或货物而有欠款的客户)。C++没有在文件上强加任何结构。原创 2025-06-01 21:52:05 · 1301 阅读 · 0 评论 -
C++学习-入门到精通【11】输入/输出流的深入剖析
C++提供多种流操纵符来完成格式化的任务。流操纵符的功能包括设置域的宽度、设置精确度、设置和取消格式状态、设置域的填充字符、刷新流、向输出流添加新行(并刷新流)、在输出流中添加一个新字符、跳过输入流中的空白,等等。程序员可以创建自己的流操纵符。下面的代码中展示了创建和使用新的无参数操纵符belltab和endLine。对于输出流操纵符来说,它们的返回类型都必须是ostream&类型的。// 输出一个\a// 输出一个 \r// 输出一个 \t// 输出一个 endlint main()原创 2025-05-31 19:00:17 · 1187 阅读 · 0 评论 -
C++学习-入门到精通【10】面向对象编程:多态性
文章中详细介绍了C++中多态性的原理原创 2025-05-30 15:33:55 · 2768 阅读 · 0 评论 -
C++学习-入门到精通【9】面向对象编程:继承
那么我们应该如何将一个类定义为另一个类的派生(从另一个类继承)呢?这是最常用的继承形式——public继承的一个例子。本文后续部分会继续讨论private继承和protected继承。在各种形式的继承中,基类的private成员都不能被它的派生类直接访问,但是这些private基类成员仍被继承(派生类也包含它们)。原创 2025-05-27 11:33:57 · 2518 阅读 · 0 评论 -
一些运算符重载的例子
上面代码中并没有重载双方括号运算符,因为它需要创建一个辅助类(管理单行,将一行看成一个一维数组来管理),在该辅助类中重载一个[]运算符,再在二维数组类中重载一个[]运算符,让它访问一行。由链式使用两个[]运算符来实现二维数组的访问,感兴趣的同学可以自己试着实现一下。上面代码中只定义了HugeInt类中的加法操作,大家还可以参照上面的形式,补充其他运算。原创 2025-05-25 09:33:42 · 406 阅读 · 0 评论 -
C++学习-入门到精通-【8】运算符重载:string类
本章将介绍如何将C++中的运算符与类对象结合在一起使用,这个过程被称为运算符重载。<<就是C++内置的重载运算符的一个例子,它即可以作为流插入运算符,又可以作为左移运算符。除此之外,C++语言还重载了加法运算符(+)和减法运算符(-),在基础数据类型如整数算术运算、浮点数算术运算和指针算术运算中,这两个运算符会根据上下文执行不同的运算。C++允许程序员重载大部分由类使用的运算符——编译器基于操作数的类型产生合适的代码。由重载运算符完成的工作也可以通过显式函数调用完成,但通常采用运算符形式更自然。原创 2025-05-24 12:27:23 · 1068 阅读 · 0 评论 -
C++学习-入门到精通-【7】类的深入剖析
上面代码的set成员函数中使用了一个在头文件中定义的invalid_argument类,定义了一个该类的对象用以在函数的实参不合法时抛出一个类型为的异常。客户代码中可以使用之前使用过的语句来捕获该异常。跟在类名称后面的圆括号表示对该类的构造函数的一个调用,其中我们指定一个用户自定义的错误信息字符串。在异常对象被创建之后,此throw语句立即终止函数setTime,然后异常返回到尝试设置时间的代码处。在printUniversal函数中使用流操纵符,它用于指定当输出位宽大于输出整数值中数字个数时,所显示的填充原创 2025-05-17 21:00:13 · 1218 阅读 · 0 评论 -
C++学习-入门到精通-【5】类模板array和vector、异常捕获
vertor<类型> 名称(大小);示例代码int main()// 与array类模板的声明类似,在<>中指定保存元素的类型,但是容量在变量名后指定// 创建一个有7个int类型元素的vector对象// 创建一个有7个int类型元素的vector对象// 输出两个vector对象的大小及默认初始值// 输出17个整数用于初始化两个vector对象// 输出赋值后的vector对象的值// 创建一个新vector对象,并使用integer1赋值。原创 2025-05-09 23:00:40 · 2847 阅读 · 0 评论 -
C++学习-入门到精通-【2】类、对象和字符串的介绍
在本文中我们会从一个类的例子中逐步拆分介绍如何定义一个类,以及如何使用它;// 成员函数 // ...... // 成员属性 // ...... };一个类的定义需要使用关键字class,之后接着类的名字,通常使用骆驼风格(Pascal case),首字母大写随后的每个单词的首字母大写;注意类的体由{}包围,类的以之后的;结束。// 定义一个用于管理学生成绩的类// 它具有一个实现打印欢迎功能的成员函数public:// 输出一条欢迎信息int main()原创 2025-04-26 15:02:11 · 1284 阅读 · 0 评论 -
C++学习-入门到精通-【4】函数与递归入门
头文件向用户提供了一系列的数学函数。示例:使用负数作为sqrt的参数时示例:示例:因为设置的PI的数值是一个近似值,所以cos(PI/2)得到的是一个0的近似值。示例:示例:示例:函数使用示例:在上面的结果中可以得到, 可以取两个结果——和,2更接近0,所以商取2,得到的余数为;可以取两个结果——和,-2更接近0,所以商取-2,得到的余数为;而remainder函数取的商的原则是使得除法的结果更接近0,所以在的两个结果——和之间选择了4,因为4.8比3.6更接近4.6。示例:示例:示例:示例:示例:原创 2025-05-06 19:58:27 · 1210 阅读 · 0 评论 -
C++学习-入门到精通-【3】控制语句、赋值、自增和自减运算符
对任何可求解的问题来说,都能够以一种特定的顺序执行一系列动作来完成。执行的动作这些动作的执行顺序举个例子来说明动作的执行顺序是非常重要的。一个人早上会按照下面的算法:①起床;②脱掉睡衣;③沐浴;④更衣;⑤吃早饭;如果上面动作的执行顺序发生改变:①起床;②脱掉睡衣;③更衣;④沐浴;⑤吃早饭;这个从如果按照改变之后的顺序执行,那么他将会湿瀌瀌的吃早饭。所以在程序执行过程中,语句的执行顺序也是非常重要的,所谓的程序控制,就是指定语句(动作)的执行顺序。原创 2025-05-01 16:07:03 · 1035 阅读 · 0 评论 -
C++学习-入门到精通-【1】C++编程入门,输入/输出和运算符
缓冲区是文件管理系统的一个组成部分,可以分为输入缓冲区和输出缓冲区,数据在进入流之后并不是直接就传送给内存/硬盘,而是会先传输到缓冲区,直到缓冲区填满里面的数据都会流入下一个地方。这段代码输出结果与之前的代码相同,所以每个流插入都会在上一个流插入停止输出的地方开始继续插入输出。这段代码在输出了第一个字符串之后,第二行的流输出语句,会继续在sample后面的空格之后输出of cout;与C语言不同,根据C++的标准,如果程序执行到main的末尾但没有遇到return语句,也会认为程序成功的终止,就像遇到了。原创 2025-04-25 17:16:36 · 632 阅读 · 0 评论 -
C++学习-入门到精通-【0】计算机和C++简介
于是一个类的对象也叫这个类的一个实例。在构建一个新的类和程序时,可以重用已有的类,这可以节省时间和精力,并且重用还有助于构建一个更加可靠、有效的系统,因为被重用的类肯定是经过了大量的测试、使用及性能调试。软件开发者在编写程序的过程中发现,相较于早期的开发方法,采用模块化的、面向对象的设计和实现方法,可以显著软件开发小组的生产效率——面向对象的程序更易于理解、纠正和修改。我们可以通过继承来快速和方便的创建一个新的类,将原来的类的属性和成员函数吸收为自己的特性,同时可以添加新的特性。这些设备总称为硬件;原创 2025-04-23 21:15:38 · 890 阅读 · 0 评论
分享