![](https://img-blog.csdnimg.cn/b3cc82732ac047649d904d8841142a7e.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++
文章平均质量分 94
从零开始的C++学习教程,每篇博客都干货满满
山舟
这个作者很懒,什么都没留下…
展开
-
【C++】多态
文章目录概念一、多态的定义及实现1.多态的构成条件2.virtual关键字和虚函数3.虚函数重写4.虚函数重写的三个例外(1)协变(2)析构函数重写①不需要重写虚构函数②需要重写析构函数(3)子类的虚函数可以不用virtual修饰5.final6.override二、抽象类1.概念2.接口继承和实现继承2.读入数据总结概念通俗来说就是多种形态,具体一些就是对于某个行为,当不同的对象去完成时会产生出不同的状态。再进一步到C++中,就是函数调用的多种形态,这一特性可以让我们在调用函数时更加灵活。多态又原创 2022-05-21 11:56:46 · 6746 阅读 · 1 评论 -
【C++】继承
文章目录一、什么是继承1.概念2.定义(1)格式(2)继承关系和访问限定符(3)继承后基类成员的访问权限二、基类和派生类赋值转换1.对象2.指针和引用三、一、什么是继承1.概念继承(inheritance)机制是面向对象程序设计中使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生的新类,称派生类(或子类),被继承的类称基类(或父类)。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。之前接触的复用都是函数复用,继承是类设计层次的复用。原创 2022-04-23 17:28:08 · 10300 阅读 · 4 评论 -
【C++】输入输出流(IO流)
文章目录一、C语言的输入输出二、什么是流三、C++的IO流1.概览2.标准IO流(1)cin、cout、cerr、clog(2)cin、cout与scanf、printf(3)输入输出重载(4)getline(5)循环输入2.文件流(1)ifstream、ofstream感谢阅读,如有错误请批评指正一、C语言的输入输出C语言中最常用到的输入输出方式就是scanf()与printf()。 scanf()是从标准输入设备(键盘) 读取数据,并将值存放在一个或一些变量中;printf()是将指定的文字/字符原创 2022-04-21 10:07:32 · 8060 阅读 · 9 评论 -
【C++】模板进阶
文章目录前言一、非类型模板参数1.引出2.概念3.注意(1)非类型模板参数必须是整型(2)非类型模板参数是常量(3)缺省模板参数二、模板的特化1.概念2.函数模板的特化3.类模板的特化4.偏特化三、模板分离编译1.什么是分离编译2.模板的分离编译四、模板的优缺点1.优点2.缺点感谢阅读,如有错误请批评指正前言这篇文章是【C++】模板初阶 的进阶部分。一、非类型模板参数1.引出现在需要一个定长100的数组类,很容易设计出如下的类。#define N 100template<class原创 2022-04-18 20:25:14 · 985 阅读 · 7 评论 -
北航2022计算机软件基础期末C++复(预)习
文章目录写在前面一、C++最基础的知识二、关于继承1.定义格式2.继承关系和访问限定符3.同名函数的隐藏4.切片三、往年题1. 2012年2. 2013年3. 2014年写在最后写在前面这篇文章只是为了帮助大家应付考试中C++的内容,学不到什么真正的知识,内容也只是根据12-14三年的期末试题来写。数据结构的内容可以看我其他的博客。提示:以下是本篇文章正文内容一、C++最基础的知识C++是C语言的提升,C的内容在C++内规则完全不变。#include <iostream> //包原创 2022-01-06 23:39:50 · 3788 阅读 · 8 评论 -
【C++】STL:list的使用及模拟实现
文章目录一、list的介绍二、list的使用1.构造函数2.遍历3.数据的插入与删除(1)尾部的插入与删除(2)头部的插入与删除(3)任意位置插入与删除三、总结一、list的介绍list是可以在常数范围内在任意位置进行效率为O(1)的插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素,关于双向链表的细节可以移步数据结构(二):链表。二、list的使用1.构造函数常用的构.原创 2021-09-25 22:13:10 · 967 阅读 · 15 评论 -
【C++】STL:vector的使用及模拟实现
文章目录一、vector的介绍二、vector的使用1.构造函数2.遍历3.数据的插入与删除3.resize和reserve三、迭代器失效问题四、vector的模拟实现总结一、vector的介绍vector是表示可变大小数组的序列容器,采用连续的存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。包含在< vector >头文件下。二、vector的使用STL之所以好用,不.原创 2021-09-20 13:24:19 · 2233 阅读 · 26 评论 -
【C++】STL:string的模拟实现
前言在【C++】STL(一)string类的使用一文中已经对string类进行了简单的介绍,一般来说只要会正常使用即可,下面来模拟实现string类,最主要是实现string类的构造、拷贝构造、赋值运算符重载以及析构函数。一、四个默认成员函数1.构造函数构造函数的实现思路就是给_str新开一片空间,并把参数中的字符串拷贝到新开的空间内。class String{public: String(const char* str = "") :_str(new char[strlen(str)原创 2021-07-26 14:48:21 · 823 阅读 · 14 评论 -
【C++】STL:string的使用
文章目录前言一、 标准库中的string类1.string类2. string类的常用函数接口二、使用步骤1.引入库2.读入数据总结前言C语言中没有字符串这一类型,只能通过char数组来间接实现,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,而且底层空间需要用户自己管理,可能还会非法访问。一、 标准库中的string类1.string类string是表示字符串的字符串类,该类的接口与常规容器的接口基本相同,再添加了原创 2021-07-23 22:49:42 · 1488 阅读 · 22 评论 -
【C++】模板初阶
文章目录一、泛型编程二、函数模板1.函数模板概念2.函数模板格式3.函数模板的实例化三、类模板1.类模板的定义2.类模板的实例化感谢阅读,如有错误请批评指正一、泛型编程以交换两个变量的值为例:代码如下:void Swap(int& a, int& b) { int temp = a; a = b; b = temp;}void Swap(double& a, double& b) { double temp = a; a = b; b = tem原创 2021-07-22 21:11:29 · 348 阅读 · 22 评论 -
【C++】友元+内存管理
文章目录一、友元1.友元函数2.友元类二、C语言动态内存管理的方式三、 C++内存管理方式1.new/delete操作内置类型2.new和delete操作自定义类型四、 malloc/free和new/delete1.共同点2.不同点感谢阅读,如有错误请批评指正一、友元友元分为友元函数和友元类。友元提供了一种突破封装的方式,有时提供了便利。但是友元会增加耦合度,破坏了封装,所以友元不宜多用。1.友元函数如果想要用cout直接输出日期而不是用成员函数来间接输出,就需要重载>>来实现。原创 2021-07-21 22:39:03 · 884 阅读 · 15 评论 -
【C++】类和对象4(初始化列表、静态成员、内部类)
文章目录一、再谈构造函数1.构造函数体内赋值2.初始化列表(1)格式(2)用处3.静态成员二、类成员默认值(C++11)三、内部类感谢阅读,如有错误请批评指正一、再谈构造函数1.构造函数体内赋值在创建对象时,编译器自动调用构造函数,给对象中各个成员变量一个合适的初始值。代码如下(示例):class Date{public: Date(int year, int month, int day) { _year = year; _month = month; _day = day原创 2021-07-10 14:50:30 · 450 阅读 · 7 评论 -
【C++】类和对象3(析构、拷贝构造、赋值运算符重载、const成员函数)
文章目录一、析构函数1.概念2.特性(1)函数名(2)无参数无返回值(3)一个类有且只有一个析构函数,编译器自动调用(4)编译器生成的默认的析构函数二、拷贝构造函数1.概念2.特性(1) 拷贝构造函数是构造函数的一个重载(2) 拷贝构造函数的参数(3)系统生成的默认的拷贝构造函数三、赋值运算符重载1.运算符重载总结一、析构函数1.概念上一篇文章中讲到构造函数来初始化一个对象,那么析构函数的作用是什么呢?已创建的对象在销毁(也即生命周期结束)时会自动调用析构函数,完成类的一些资源清理工作。注意:构原创 2021-07-09 21:27:45 · 802 阅读 · 8 评论 -
【C++】类和对象2(this指针、默认成员函数、构造函数)
文章目录一、this指针1.this指针的引入2.this指针的特性3.两个小问题二、使用步骤1.引入库2.读入数据总结一、this指针1.this指针的引入这里实现一个日期的类,之后的内容以这个类为例。代码如下(示例):class Date{public:private: int _year;//年 int _month;//月 int _day;//日};但是想要修改或使用的成员变量都是private的,在类外无法访问,所以需要在public中定义成员函数对成员变量进行操原创 2021-07-08 16:39:25 · 845 阅读 · 11 评论 -
【C++】类和对象1(访问限定符、作用域、类对象)
文章目录前言一、类的引入二、类的定义三、类的访问限定符及封装1.访问限定符2.封装四、类的作用域五、类对象模型1.如何计算类对象的大小2.类对象的存储方式猜测(1)类实例化出的对象中包含所有成员(2)类实例化出的对象中只保存成员变量,成员函数存放在公共的区域(代码段)感谢阅读,如有错误请批评指正前言C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。一、类的引入C语言中,结构体原创 2021-07-07 16:49:48 · 932 阅读 · 7 评论 -
【C++】基础语法2(引用,内联,auto,范围for,nullptr)
文章目录一、引用1.概念2. 引用特性3.常引用3.引用的使用场景(1)做参数(2)做返回值(4)引用和指针的区别二、使用步骤1.引入库2.读入数据总结一、引用1.概念引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。用法:类型& 引用变量名(对象名) = 引用实体如下面的代码int main(){ int a = 0; int& b = a;//b是a的引用 int& c = a;//c原创 2021-07-06 13:25:27 · 575 阅读 · 24 评论 -
【C++】基础语法1(关键字、命名空间、缺省参数、函数重载)
文章目录前言一、C++关键字(C++98)二、C++的第一个程序二、命名空间1.命名冲突问题2.命名空间的定义3.命名空间的使用(1)加命名空间名称及作用域限定符::(2)使用using将命名空间中成员引入(3)使用using namespace 命名空间名称引入三、C++输入输出四、缺省参数1.概念2.缺省参数分类(1)全缺省:所有的参数都给出了默认值(2)半缺省:部分参数给出默认值五、函数重载感谢阅读,如有错误请批评指正前言前面写了C语言和数据结构的部分内容,从本篇文章开始正视进入C++相关的内容原创 2021-07-05 17:59:32 · 522 阅读 · 5 评论