C++基础学习笔记
文章平均质量分 62
kdnnnd
这个作者很懒,什么都没留下…
展开
-
C++基础学习第十六课(新特性)
第十六课C++11/14/17标准1,强制转换C语言使用Type b=(Type)a的形式进行强制转换.但是有缺点:万物皆可转,不易区分;C++提供了四种类型转换操作符用来在不同场合进行强制转换;类型转换操作符作用static_cast静态类型转换,编译器做类型检查,基本类型能转换,指针不行;reinter_cast重新解释类型;const_cast去掉const属性;dynamic_cast动态类型转换,运行时检查类型安全,(转换失败返回nullpt原创 2021-03-19 19:51:18 · 174 阅读 · 0 评论 -
C++基础学习第十六课(模板)
第十六课(模板)1,模板和泛型泛型编程是指独立与任何类型的方式编写代码;泛型编程和面向对象编程,都依赖与某种形式的多态.面向对象编程的多态性在运行时应用于存在继承关系的类.一段代码可以忽略基类和派生类之间的差异.在泛型编程中,编写的代码可以用作多种类型的对象.面向对象编程所依赖的多态性称为运行时多态性,泛型编程所依赖的多态性称为编译时多态性或参数式多态性;模板是泛型编程的基础,模板是创建类或者函数的公式;模板是一种对类型进行参数化的工具,有两种形式:函数模板和类模板;2,函数模板针对仅参数类型不原创 2021-03-18 15:32:35 · 102 阅读 · 0 评论 -
C++基础学习第十五课(异常处理)
10,异常处理1,定义:异常处理就是处理程序中的错误;2,基本思想:让一个函数在发现了自己无法处理的错误时,抛出(throw)一个异常,然后它的(直接或间接)调用者可以吹这个问题;------即将问题检测和问题处理分离;3,异常基本语法1,抛出异常使用throw;2,捕获异常使用try{}catch(){};throw:当问题出现时,程序会抛出一个异常;catch:在你想要处理问题的地方,通过异常处理程序捕获异常;try:try块中的代码标识将被激活的特定异常,它后面通常跟着一个或多个c原创 2021-03-14 15:10:32 · 168 阅读 · 0 评论 -
C++基础学习第十四课(文件流)
9.文件流1,C++提供了文件流,fstream来处理文件;数据类型描述ofstream该数据类型表示输出文件流,用于创建文件并向文件写入信息;ifstream该数据类型表示输入文件流,用于从文件读取信息;fstream该数据类型通常表示文件流,且同时具有ofstream和ifstream两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息;2,在从文件读取信息或者向文件写入信息之前,必须先打开文件;`ofstream用来打开文件进行写操作;`原创 2021-03-14 15:09:23 · 100 阅读 · 0 评论 -
C++基础学习第十三课(IO流类)
1,I/O流在C++的标准库中,将用于进行数据输入输出的类统称为“流类”.cin是流类istream的对象,cout是流类ostream的对象.要使用流类,需要在程序中包含头文件;2,标准I/O对系统指定的标准设备的输入和输出,即从键盘输入数据,输出到显示器屏幕,这种输入输出称为标准的输入和输出,简称标准I/O;3,文件I/O将外存磁盘文件作为对象进行输入和输出,即从磁盘文件输入数据,数据输出到磁盘文件,这种方式称为文件的输入和输出,简称文件I/O;4,串I/O对内存中指定的空间进行输入和原创 2021-03-14 15:07:40 · 221 阅读 · 0 评论 -
C++基础学习第十二课(小知识)
1,面向对象三大概念1,封装:突破了C语言函数的概念;2,继承:代码复用–即可以用以前写的代码;3,多态:可以使用未来写的代码;2,函数重载,重写,重定义1,函数重载:必须在同一个类(作用域)中进行;子类无法重载父类中的函数,只能进行重定义;2,函数重定义:一旦子类写了和父类同名的成员函数,父类的函数将被覆盖,无法直接访问;3,函数重写:重写关系发生在父类与子类之间,并且父类和子类中的函数具有完全相同的函数原型;使用virtual声明的函数重写,会在父类指针调用时,根据指针指向的实际对象的类型原创 2021-03-12 17:52:48 · 113 阅读 · 0 评论 -
C++基础学习第十一课(多继承和多态)
第十一课1,多继承定义派生类只有一个基类,称为单继承.C++支持多继承,即一个派生类可以有两个或多个基类;2,多继承声明class 派生类名:访问控制 基类名1,访问控制 基类名2...{ 数据成员和成员函数声明;};注意点:1,类C可以根据访问控制同时继承类A和类B的成员,并添加自己的成员;2,如果类A和类B有同名的成员,需要使用域运算符::显示调用;3,多继承的二义性1,如果一个派生类从多个基类派生,而这些基类又有一个共同的基类,则在对该基类中声明的名字进行访问时,可能原创 2021-03-12 17:50:46 · 351 阅读 · 0 评论 -
C++基础学习第九课(C++继承)
第九课1,类的继承·继承可以使得子类具有父类的属性和仿佛或者重新定义、追加属性和方法;2,继承相关概念·继承是类之间定义的一种重要关系;·一个B类继承A类,或者说从A类派生B类;·那么A类称为基类,B类称为派生类(子类);如图:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WNmI1gaM-1614928508549)(C:\Users\daili\AppData\Roaming\Typora\typora-user-images\image-20210305原创 2021-03-05 15:15:51 · 195 阅读 · 0 评论 -
C++基础学习第八课(运算符重载)
第八课1,意义:·运算符重载,就是赋予运算符新的含义,和函数重载一样,一个函数名可以用来代表不同功能的函数;··运算符重载是为了解决类对象之间的运算符,通常的运算符只用于算术运算,如常量int之间,因为编译器已经定义了,而一个类两个对象之间成员进行运算必须重新定义,让编译器在遇到对象运算时能按我们要求进行运算2,运算符重载限制1,可以重载的运算符算术运算符:+ - * / %自增、自减运算符:++ –位运算符:| & ~ ^ <<原创 2021-03-03 12:47:40 · 128 阅读 · 0 评论 -
C++基础学习第七课(友元函数与友元类)
第七课1.explicit关键字·C++提供了关键字explicit,禁止通过构造函数进行的隐式转换,声明为explicit的构造函数不能在隐式转换中使用、·注意:explicit用于修饰构造函数,防止隐式转换,是针对单个参数的构造函数(或者除了第一个参数外其余参数外其余参数都有默认值的多参构造)而言;事例: class My { private: char*m_name; int m_age; public:原创 2021-02-28 13:05:58 · 189 阅读 · 0 评论 -
C++基础学习第六课(构造函数与析构函数)
第六课1,构造函数·创建一个对象时,常常需要做某些初始化的工作,例如对数据成员赋初值;·为了解决这个问题,C++提供了构造函数,用来处理对象的初始化,构造函数是一种特殊的成员函数,与其他成员函数不同,不需要用户来调用它,而是在建立对象时自动执行;1.1定义:·C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫构造函数;·构造函数在定义时可以有参数,因此可以发生重载;·没有任何返回类型的声明;1.2调用:·自动调用(隐式):一般情况下,C++编译器会自动调用构造函数(无原创 2021-02-26 20:21:46 · 237 阅读 · 0 评论 -
C++基础学习第五课(类和对象)
第五课1,面向过程步骤化:是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用;2,面向对象行为化:面向对象是吧整个需求按照特点、功能划分,将这些存在共性的部分封装成对象,创建了对象不是为了完成某一个步骤,而是描述某个事物在解决问题的步骤中的行为;3,类类:是具有相似属性和行为的一组实例集合;4,对象对象,即类的实例,各种各样的事物;5,面向对象四大特征抽象:指对具体问题(对象)进行概括,抽出一类对象的公共属性和行为并加以描述的过程;封装:是把每个原创 2021-02-24 22:08:44 · 187 阅读 · 0 评论 -
C++基础学习第四课
第四课1,进制表示方法例子: //十进制 int dec1 = 520; //八进制 int oct1 = 01010; //二进制 int bin1 = 0b1000001000; //十六进制 int hex1 = 0x208;2,单引号隔开数字int bin = 0b10'0000'1000;3,auto自动类型推导1,C++中使用auto自动类型推导注意事项: 1,auto仅仅是一个占位符,编译时会被真正的类型替代; 2,auto不能在函数的参数中使原创 2021-02-10 18:45:24 · 129 阅读 · 0 评论 -
C++基础学习第三课(枚举类型)
第三课案例:enum WEEK {MON,TUE,WED,THI,FIR,SAT,SUN};enum SHAPE {CIRCLE,RECT,LINE,POINT};1,C语言中的enum·允许非枚举值赋值给枚举类型,允许其他枚举类型的值赋值给另一个枚举类型;enum WEEK today=1;//truetoday=CIRCLE;//true·枚举具有外层这作用域,容易造成名字冲突(在不同作用域不会冲突,但是会遵循就近原则,访问不到外层作用域的枚举);enum OTHER {RECT}原创 2021-02-10 11:46:58 · 184 阅读 · 1 评论 -
C++基础学习第二课(变量的初始化)
第二课1,背景1,在c++中,初始化与赋值并不是同一个概念;2,初始化:创建变量时赋予其一个初始值;3,赋值:把对象(已经创建)的当前值删除,而用一个新值代替;2,列表初始化作为C++11新标准的一部分,用花括号来初始化变量得到了全面的应用,(在此之前,只是在初始化数组的时候用到);形式:int a={0};int a{0};//这两种方式都可以将变量a初始化为0局限性:当对内置类型使用列表初始化时,若初始值存在丢失的风险,编译会报错;例子: int a=3.123;//w原创 2021-02-04 17:34:09 · 360 阅读 · 0 评论 -
C++基础学习第一课(从C语言到C++)
第一课1,头文件C++为了兼容C,支持所有C头文件,但为了符合C++标准,所有的C头文件都有一个C++版本,主要的改变是【去掉 .h ,并在名字的前面加c】。如图:C语言C++stdio.hiostream(C++标准输入输出流头文件)math.hcmathstring.hcstringstdlib.hcstdlib……2,命名空间为了解决命名问题(如同名),引入了命名空间,它可作为附加信息来区分不同库中,相同名称的函数、类、变量等,本质原创 2021-02-04 14:47:03 · 312 阅读 · 0 评论