C++基础
文章平均质量分 78
修炼成妖kkk
咸鱼一条
展开
-
类和对象(一)
类和对象(一)面向对象面向对象程序设计 概念:(Object Oriented Programming,缩写:OOP)是一种程序设计范型,同时也是一种程序开发的方法。 对象指的是类的实例,将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。 C++不是纯面向对象语言,而是基于面向对象的语言 (ps:因为它包含C的部分,C是面向过程)访问限定符C...原创 2018-06-21 13:49:40 · 161 阅读 · 0 评论 -
C++智能指针
C++智能指针在我们了解完C++中异常处理机制后,其实有一个很大的问题存在,那就是当我们一个地方抛了异常以后它的执行流就跳走了,这样会有很大的问题,导致我们可能发生内存泄漏问题,其实只要我们在异常处理catch那里进行对内存泄漏的处理也是没有问题的,可是问题是我们也不知道什么时候会抛异常,所以我们需要一个机制来托管我们的资源,保证就算执行流乱跳我们也可以最后把资源释放了,不会导致内存泄漏等问题。...原创 2018-10-23 20:31:42 · 331 阅读 · 0 评论 -
C++异常处理
C++异常处理在我们以前的学习中,总会有很多控制代码出错的地方,类似于段错误等,在我们以前的处理办法中,一般有以下几种处理方式:终止程序(比如段错误)返回错误码返回合法值调用一个预先设置好的函数(回调函数)可是以上几种方法皆有很多弊端,第一种直接终止程序说到底并没有解决问题,我们不会解决问题也不知道问题出在哪里,第二种方法返回错误码我们知道了错误的地方可是依旧没办法解决,第三个事实...原创 2018-10-23 15:53:22 · 145 阅读 · 0 评论 -
C++模板
探索C++模板在我们学习C++的过程中,经常会遇到一类问题就是很多地方代码相同只是类型不同,我们就需要将同样的逻辑实现两遍,比如当我们实现一个交换函数swap的时候,交换int类型要用到,交换string类型也要用到,而由于类型不同我们就需要将这个函数实现两遍,C++中提供了模板来实现泛型编程,模板可以理解为一个模具,当我们需要int类型的代码时,系统去这个模具实例化一份int代码出来,需要st...原创 2018-10-17 10:09:57 · 123 阅读 · 0 评论 -
C++中的友元函数和友元
C++中的友元函数和友元类在C++中类具有封装的隐蔽性,由于语言特性,只有成员函数才能访问私有成员,非成员函数只能访问类中的公有成员,可是有时候我们需要非成员函数调用私有成员,这个时候要是将私有成员定义为公有的又会破坏C++的封装,为了解决上述问题,我们提出了友元的概念友元分为友元函数和友元类,友元函数就是非成员函数可是当我们声明成友元函数的时候也可以访问类中的私有成员,友元类就是可以访问另一...原创 2018-09-30 10:31:13 · 156 阅读 · 0 评论 -
C++全特化与偏特化
C++全特化与偏特化C++中用模板来实现代码的复用,模板分为类模板与函数模板,虽然模板引进到C++中的时间不长,可是却在很多方面有很多的应用,比如标准模板库STL中就有很多应用,然而当我们仔细的学习STL就会发现其中的模板充斥着很多的全特化与偏特化模板,那么什么是特化模板呢?我们前面学习了模板知道了编译的时候编译器可以根据类型的不同实例化出不同的对象,可是如果有一个类型有更好的解决方案那么这个...原创 2018-10-18 15:02:45 · 1359 阅读 · 0 评论 -
探索C++对象模型
探索C++对象模型前两篇博客主要了解了多态和继承的基础,可是当我们在学习多态和继承的时候,难免会碰到很多关于C++对象模型的问题,例如菱形继承中的数据冗余如何解决,虚基表是如何解决菱形继承中数据冗余问题等,这一篇博客我们以C++中多态与继承为基础,探索C++对象模型。首先我们先来看看虚函数,虚函数就是在函数名前面加virtual的函数,虚函数可以解决继承的很多问题,而对于多态而言,没有虚函数就...原创 2018-10-05 14:59:01 · 174 阅读 · 0 评论 -
C++ 多态
C++多态C++中的三个特性中封装实现了对于数据的安全以及管理,继承实现了对于逻辑的复用,而我们今天实现的多态就是实现了灵活性,多态故名思意就是多种形态,多态可以简单的概括为“一个接口,多种方法”根据对象的不同来调不同的函数,同时也体现了C++的面型对象特性。多态分为静态多态和动态多态静态多态:静态多态就是重载,在编译的时候决定,所以叫静态多态动态多态:用虚函数实现,在运行的时候决定,被叫...原创 2018-10-04 10:36:53 · 155 阅读 · 0 评论 -
C++中的继承
C++中的继承在C++中有三个很重要的特性,分别是封装,继承,多态,封装实现了管理,多态实现了灵活性,而继承就实现了代码的复用,在我们日常生产生活中,会发现很多类的关系相近,一个类中包含另一个类中所有成员,类似于车与轮子的关系等,基于这种情况我们提出了继承,一个类可以继承另一个类实现代码的复用。可是我们前面的学习知道, C++有封装特性,有的东西是自己私有的,不希望被类外的访问,并且我们用访问...原创 2018-10-03 14:55:20 · 417 阅读 · 0 评论 -
动态内存管理(C++)
动态内存管理(C++)在C语言中我们为了解决部分问题从而选择在堆上开空间,从而有了动态内存管理,故名思意,动态内存管理就是我们自己向内存申请空间自己释放,在C语言中我们用malloc calloc realloc free这几个函数来向堆上开辟释放空间,但是在C++中由于有类的关系所以与C的申请方式不一样,这一篇博客我们来看一看C++中的动态内存管理。new与delete在C++中我们...原创 2018-06-26 18:05:25 · 285 阅读 · 0 评论 -
初入C++
初入C++通过这半年的学习,我掌握了C语言的基础知识以及数据结构的基础知识,不过在用C语言写数据结构的时候我发现C语言什么都需要自己造轮子,在某些场景下很不方便,比如当我们需要两个不同类型的链表的时候C语言处理就很麻烦,因为他不支持泛型编程,同时在处理一些练手的小项目的时候很不方便,比如写一个日历,面向过程编程就显得很吃力,这个时候我决定学习C++来解决上述问题以便更好的解决问题。 可是在还...原创 2018-06-10 21:36:41 · 178 阅读 · 0 评论 -
类和对象(二)
类和对象(二)这篇博客主要根据const修饰成员函数,内联,友元函数以及静态成员这四个方向说明。const修饰的成员函数在以前的学习中我们学习了const修饰指针,修饰指针指向的变量,const修饰变量以及const修饰函数返回值等,这一次我们学习const修饰成员函数。 首先const放在函数后面:void fun()const 这样表示const修饰的是this指针所指向的...原创 2018-06-22 14:34:45 · 152 阅读 · 0 评论 -
引用和指针
引用和指针在C语言中我们习惯在某些场景下用指针操作,可是指针操作虽然灵活也有很多的风险,而且指针操作偏底层,对于面向对象的语言来说不是很方便,C++中我们用引用来替代指针的部分操作。引用的概念引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名。 定义的格式为: 类型 &引用变量名 = 已定义过的变量名; 引用的特点: 1. 一个变量可取多个别名 2....原创 2018-06-14 15:27:16 · 150 阅读 · 0 评论 -
C++强制类型转换
C++强制类型转换在前面C语言的学习中我们知道C语言有隐式类型转换与强制类型转换,比如当我们用一个int类型的值加一个double类型的值的时候编译器会默认将double转换成为int类型,这个就是C语言中的隐式类型转换。同样的一个void类型的指针我们用(int)也可以将他强制转换成int*类型,这个是C语言中强制类型转换。在C++中我们也有一套强制类型转换,他们分别是static_cast...原创 2018-10-30 16:46:26 · 2149 阅读 · 0 评论