
C++
文章平均质量分 80
陶表犁
这个作者很懒,什么都没留下…
展开
-
C++多态实现机制剖析
面向对象的三大概念:封装,继承,多态。封装突破了c语言函数的概念;继承实现了代码的复用,那么多态实现了什么价值呢,简单理解就是前人写的代码(框架)可以调用后人写的代码。1 什么是多态?多态性可以简单的概括为“1个接口,多种方法”,在程序运行的过程中才决定调用的机制程序实现上是这样:通过父类指针调用子类的函数,可以让父类指针有多种形态。2. 理解多态成立的三个条件对比思考间接赋值成立的三个条件:1. 定义两个变量,2.建立变量之间的联系,3.*p通过地址间接赋值。多态的单个条件:1.要有继承。2原创 2021-01-15 13:49:39 · 223 阅读 · 0 评论 -
C++ virtual关键字深入理解
对virtual关键的理解需要结合其应用场景来分析。以下从多个角度来深入理解virtual关键字。1.virtual关键字主要是什么作用?c++中的函数调用默认不适用动态绑定。要触发动态绑定,必须满足两个条件:第一,指定为虚函数;第二,通过基类类型的引用或指针调用(多态产生的条件)。由此可见,virtual主要主要是实现动态绑定。2.哪些情况下可以使用virtual关键字?virtual可用来定义类函数和应用到虚继承(一个是多态应用到函数,一个虚继承应用到类)。友元函数 构造函数 static静原创 2021-01-15 13:42:51 · 521 阅读 · 0 评论 -
C++ virtual关键字深入理解
对virtual关键的理解需要结合其应用场景来分析。以下从多个角度来深入理解virtual关键字。1.virtual关键字主要是什么作用?c++中的函数调用默认不适用动态绑定。要触发动态绑定,必须满足两个条件:第一,指定为虚函数;第二,通过基类类型的引用或指针调用(多态产生的条件)。由此可见,virtual主要主要是实现动态绑定。2.哪些情况下可以使用virtual关键字?vi原创 2016-07-10 21:27:51 · 712 阅读 · 0 评论 -
C++函数模板深入理解1
C++函数模板深入理解1思考:C++为什么要引入函数模板?为了解决什么问题?如何使用函数模板?先从一个问题出发:需求:写n个函数,求char类型、int类型、double类型变量的最小值。int min( int a, int b ) {return a }double min( double a, double b ) {return a }是不是对所原创 2016-07-12 11:12:59 · 429 阅读 · 0 评论 -
C++类模板深入理解2
C++类模板深入理解21、认识在Template中Typename和class关键词。在c++的Template中很多地方都用到了typename与class这两个关键字,而且有时候二者可以替换,那么是不是这两个关键字完全一样呢?事实上class用于定义类,在模板引入c++后,最初定义模板的方法为:template,这里class关键字表明T是一个类型,后来为了避免class在这两个地方的原创 2016-07-12 21:19:34 · 370 阅读 · 0 评论 -
C++类型转化
C++类型转化在理解C++类型转换前,我们先回顾C语言中类型转换。c风格的强制类型转化很简单,不管什么类型转换统统是Type b=(Type)a。但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非const对象的指针,把一个指向基类对象的指针转换成指向一个派生类对象的指针,这两种转换之间原创 2016-07-12 21:36:55 · 319 阅读 · 0 评论 -
C++输入输出流
C++输入输出流一、C++ 输入输出的含义在C语言中我们就已经了解过输出输出的概念,即从键盘输入数据,运行结果输出到显示器屏幕上。站在操作系统的角度看,每一个与主机相连的输入输出设备都被看作一个文件。程序的输入指的是从输入文件将数据传送给程序,程序的输出指的是从程序将数据传送给输出文件。C++的输入与输出包括以下3方面的内容:1. 对系统指定的标准设备的输入和输出。即从键盘原创 2016-07-14 14:27:46 · 1398 阅读 · 1 评论 -
C++复习要点总结(一)
C++对C语言的加强——类型加强1. register 关键字增强register关键字 请求编译器让变量直接放在寄存器里面,速度快。在c语言中 register修饰的变量 不能取地址;在C++中可以取地址。2. 变量检测增强在C语言中,重复定义多个同名的全局变量是合法的, 在C++中,不允许定义多个同名的全局变量。3. C++中所有的变量和函数都必须有原创 2016-03-12 09:04:24 · 390 阅读 · 0 评论 -
C++引用原理剖析
在理解引用概念前,先回顾一下变量名。变量名实质就是一段连续存储空间的别名(内部有自己的编号),是一个标号(门牌号),程序需要通过变量来申请并命名内存空间(编译器建立与内存地址的联系)?那么问题来了,一段连续的内存空间只能取一个别名吗?显然不是,引用的概念诞生了。在C++中新增了引用的概念,引用是一个已定义变量的别名。其语法是 Type& name = var; 例如:int a原创 2016-07-09 14:01:30 · 2004 阅读 · 1 评论 -
C++复习要点总结之二——函数
一 inline内联函数说明1:必须inline int myfunc(int a, int b)和函数体的实现,写在一块说明2C++编译器可以将一个函数进行内联编译被C++编译器内联编译的函数叫做内联函数内联函数在最终生成的代码中是没有定义的C++编译器直接将函数体插入在函数调用的地方内联函数没有普通函数调用时的原创 2016-03-15 20:45:31 · 370 阅读 · 0 评论 -
c++复习要点总结之三 ——构造函数
构造函数:与类名相同的函数就是构造函数,没有返回值类型声明。构造函数的分类:无参构造函数、有参构造函数、赋值(拷贝)构造函数Test() //无参构造函数定义Test(inta, int b) //有参构造函数定义Test(const Test &obj) //拷贝构造函数定义下面分别讨论三种构造函数1. 无参构造函数调用方法:Test t1, t2; //这个很好理原创 2016-03-17 21:30:10 · 375 阅读 · 0 评论 -
C++复习要点总结之四New和delete使用
对象的动态建立与释放1 new和delete基本语法1)在软件开发过程中,常常需要动态地分配和撤销内存空间,例如对动态链表中结点的插入与删除。在C语言中是利用库函数malloc和free来分配和撤销内存空间的。C++提供了较简便而功能较强的运算符new和delete来取代malloc和free函数。注意: new和delete是运算符,不是函数,因此执行效率高。2)虽然原创 2016-03-23 19:18:58 · 644 阅读 · 0 评论 -
C++复习要点总结之五静态成员变量及成员函数
思考:每个变量,拥有属性。有没有一些属性,归所有对象拥有?1. 静态成员变量1)定义静态成员变量Ø 关键字 static 可以用于说明一个类的成员, 静态成员提供了一个同类对象的共享机制Ø 把一个类的成员说明为 static 时,这个类无论有多少个对象被创建,这些对象共享这个 static 成员Ø 静态成员局部于类,它不是对象成原创 2016-03-23 20:47:01 · 331 阅读 · 0 评论 -
C++STL容器的基本操作
在初学阶段希望能够对容器基本操作的记忆和熟练使用,需要对各种容器进行归纳总结。首先,C++中有两种类型的容器:顺序容器和关联容器。顺序容器主要有vector、list、deque等。其中vector表示一段连续的内存,基于数组实现,list表示非连续的内存,基于链表实现,deque与vector类似,但是对首元素提供插入和删除的双向支持。关联容器主要有map和set。map原创 2016-09-11 09:38:25 · 324 阅读 · 0 评论 -
C++多态实现机制剖析
面向对象的三大概念:封装,继承,多态。封装突破了c语言函数的概念;继承实现了代码的复用,那么多态实现了什么价值呢,简单理解就是前人写的代码(框架)可以调用后人写的代码。1 什么是多态?多态性可以简单的概括为“1个接口,多种方法”,在程序运行的过程中才决定调用的机制程序实现上是这样:通过父类指针调用子类的函数,可以让父类指针有多种形态。2. 理解多态成立的三个条件对比思考原创 2016-07-10 20:44:27 · 340 阅读 · 0 评论 -
c++复习要点总结之七——运算符重载
运算符重载所谓重载,就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义,使之实现新功能,因此,一个函数名就可以用来代表不同功能的函数,也就是”一名多用”。运算符也可以重载。实际上,我们已经在不知不觉之中使用了运算符重载。例如,大 家都已习惯于用加法运算符”+”对整数、单精度数和双精度数进行加法运算,如5+8, 5.8 +3.67等,其实计算机对整数、单精度数和双精度数的加法操作原创 2016-03-25 21:32:07 · 848 阅读 · 0 评论 -
C++复习要点总结之——友元
在C++中,类的成员访问权限有三种,private,protected,public。private:类中的private成员只能够在本类中或者友元访问,子类或外界无法访问私有成员。protected:类中的protected成员只允许本类或者子类中访问,外界无法访问,(定义类时如果希望成员被子类继承而外界不能访问就可以定义为原创 2016-07-09 19:01:35 · 332 阅读 · 0 评论 -
c++复习要点总结之九——继承二
一 继承中的同名成员变量处理方法1、当子类成员变量与父类成员变量同名时2、子类依然从父类继承同名成员3、在子类中通过作用域分辨符::进行同名成员区分(在派生类中使用基类的同名成员,显式地使用类名限定符)4、同名成员存储在内存中的不同位置二. 派生类中的static关键字继承和static关键字在一起会产生什么现象哪?理论知原创 2016-03-29 21:27:47 · 412 阅读 · 0 评论 -
C++复习要点总结之十——多态(一)
多态的理解:是一个面向对象新需求:根据实际的对象类型来判断重写函数的调用如果父类指针指向的是父类对象则调用父类中定义的函数如果父类指针指向的是子类对象则调用子类中定义的重写函数解决方案:Ø C++中通过virtual关键字对多态进行支持Ø 使用virtual声明的函数被重写后即可展现多态特性//面向对象3大概念封装原创 2016-03-31 19:28:35 · 591 阅读 · 0 评论 -
C++复习要点总结之六——编译器对属性和方法的处理机制
编译器对属性和方法的处理机制 C++中的class从面向对象理论出发,将变量(属性)和函数(方法)集中定义在一起,用于描述现实世界中的类。从计算机的角度,程序依然由数据段和代码段构成。C++编译器如何完成面向对象理论到计算机程序的转化?换句话:C++编译器是如何管理类、对象、类和对象之间的关系具体的说:具体对象调用类中的方法,那,c++编译器是如何区分,是那个具体的类,原创 2016-03-23 21:28:01 · 405 阅读 · 0 评论 -
C++复习要点总结十一——多态(二)
一 构造函数中能调用虚函数,实现多态吗1)对象中的VPTR指针什么时候被初始化?对象在创建的时,由编译器对VPTR指针进行初始化 只有当对象的构造完全结束后VPTR的指向才最终确定父类对象的VPTR指向父类虚函数表子类对象的VPTR指向子类虚函数表class Parent{public:Parent(int a=0)//执行时此时的调用的print函数仍然是原创 2016-04-06 20:40:37 · 266 阅读 · 0 评论 -
VS2013链接mysql出现的问题一
提示错误信息:access denied for user 'root'@'localhost' using password yes前一天程序运行还是好好的,可是今天突然发现竟然出现以上错误信息。在网上搜索了好久,总算找到详细的操作方法了。为了以后不再浪费时间,把她重新整理放到 Blog 里。注意我这里的环境是 WINDOWS8.1系统,mysql-5.7.12-win32。原创 2016-05-11 19:44:36 · 559 阅读 · 0 评论 -
【C++ STL】三十分钟掌握STL
【C++ STL】三十分钟掌握STL这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。译者:karycontact:karymay@163.netSTL概述STL的一个转载 2016-05-11 20:37:42 · 610 阅读 · 0 评论 -
c++复习要点总结z之十二——STL string
1String概念² string是STL的字符串类型,通常用来表示字符串。而在使用string之前,字符串通常是用char*表示的。string与char*都可以用来表示字符串,那么二者有什么区别呢。string和char*的比较² string是一个类, char*是一个指向字符的指针。 string封装了char*,管理这个字符串,是一个char*型的容器。原创 2016-04-16 20:36:46 · 349 阅读 · 0 评论 -
c语言深入理解基本概念
基本数据类型分析数据类型什么是数据类型 ?? 数据类型可以理解为固定内存大小的别名? 数据类型是创建变量的模子类型的本质charshortint1 byte2 byte4 byte内存空间char cshort sint i变量本质? 变量是一段实际连续存储空间的别名? 程序中通过变量来申请并命名存储空转载 2016-04-24 19:36:59 · 418 阅读 · 0 评论 -
C语言函数与递归四
1 函数的定义1.1 问题自定义两个简单的函数,使用return返回数据。1.2 步骤实现此案例需要按照如下步骤进行。步骤一:函数的定义代码如下所示:#include stdio.h>int getInt(){ return 10;}double getDouble(){ return 5.5;}int mai转载 2016-04-24 19:43:46 · 403 阅读 · 0 评论 -
C++拷贝构造函数详解
一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plain copyint a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。转载 2016-06-03 19:19:21 · 343 阅读 · 0 评论 -
C++基础知识复习&总结
最近面试了3家公司。虽然有知名大公司的工作经历,虽然自己求职的目标职位是系统架构师,但发现用人单位还是看重编程基础能力。不管是自我定位太高,还是职位层次太低,系统复习了一遍很久没有摸过的C++总是有好处的。总结如下: 一、new和malloc的区别1、new和delete配对,释放数组需要用delete[]。new和delete实际上调用了malloc和free,另外调转载 2016-06-03 20:30:57 · 584 阅读 · 0 评论 -
c++重载总结
写在前面:函数重载的重要性不言而明,但是你知道C++中函数重载是如何实现的呢(虽然本文谈的是C++中函数重载的实现,但我想其它语言也是类似的)?这个可以分解为下面两个问题1、声明/定义重载函数时,是如何解决命名冲突的?(抛开函数重载不谈,using就是一种解决命名冲突的方法,解决命名冲突还有很多其它的方法,这里就不论述了)2、当我们调用一个重载的函数时,又是如何去解析的?(即怎么知转载 2016-06-03 20:55:25 · 360 阅读 · 0 评论 -
C++封装继承多态总结
C++封装继承多态总结面向对象的三个基本特征面向对象的三个基本特征是:封装、继承、多态。其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!封装转载 2016-06-03 21:26:16 · 369 阅读 · 0 评论 -
C++复习要点总结之八——继承一
一 不同的继承方式会改变继承成员的访问属性public 修饰的成员变量、方法 在类的内部和外部都可以使用。protected 修饰的成员变量、方法在类的内部使用,在继承的子类中使用,类的外部不能使用。(是为了在家族中使用,为了得到继承!)private 修饰的成员变量、方法 只能在类的内部使用,不能在类的外部使用1)C++中的继承方式会影响子类的对外访问属性 pu原创 2016-03-29 19:40:41 · 393 阅读 · 0 评论