
c++
文章平均质量分 58
Oligay
苏嵌
展开
-
类继承
4.1 继承 一个类从另一个类获取成员变量和成员函数的过程; 被继承的类称为父类或者基类,继承的类称为子类或者派生类; 继承的语法: class 派生类的名:[继承方式] 基类名{ 派生类的成员; }; 继承的方式: public ,private,protect,默认是private; public成员可以通过对象访问,private只能通过内部原创 2017-01-19 20:32:24 · 423 阅读 · 0 评论 -
C++知识总结(13)
56 桥接模式的使用范围 在以下的情况下应当使用桥梁模式:1.如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。 2.设计要求实现化角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端是完全透明的。3.一个构件有多于一个的抽象化角色和实现化角色,系统需要它们之间进行动态耦合。 4.虽然在系统中使用继承是没有问题的,但原创 2017-08-10 19:36:23 · 251 阅读 · 0 评论 -
C++知识总结(14)
61 类的成员变量的初始化顺序1、成员变量在使用初始化列表初始化时,与构造函数中初始化成员列表的顺序无关,只与定义成员变量的顺序有关。因为成员变量的初始化次序是根据变量在内存中次序有关,而内存中的排列顺序早在编译期就根据变量的定义次序决定了。这点在EffectiveC++中有详细介绍。2、如果不使用初始化列表初始化,在构造函数内初始化时,此时与成员变量在构造函数中的位置有关。3、注意:原创 2017-08-10 19:37:13 · 255 阅读 · 0 评论 -
C++知识总结(15)
66 一个空类会默认生成哪些成员1. 无参的构造函数Empty(){}2. 拷贝构造函数Empty(constEmpty©){}3. 赋值运算符Empty&operator= (constEmpty©){}4. 析构函数(非虚)~Empty(){}这些函数只有在第一次使用它们的时候才会生成,他们都是inline并且public的。如果想禁止生成这些函数,可以将它们定义成privat原创 2017-08-10 19:37:32 · 235 阅读 · 0 评论 -
C++知识总结(16)
71 mutable关键字的作用mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在原创 2017-08-10 19:37:54 · 214 阅读 · 0 评论 -
C++知识总结(17)
77 有哪些不能自动继承的成员函数构造函数,析构函数,拷贝构造函数,析构函数。78 C++中接口继承与实现继承的区别 非虚函数:强制实现继承虚函数:可视继承纯虚函数:接口继承79 基类与派生类之间转换的情况a) 对象的转换:1,派生类对象到基类对象的转换: 在用户代码中,只有公有继承时可以转换。在派生类成员函数中,均可进行转换。2,基类对象到派生类对象不可原创 2017-08-10 21:51:17 · 381 阅读 · 0 评论 -
C++知识总结(18)
81 什么是虚函数?虚函数是运行时多态不可少的技术,虚函数的存在主要是允许基类指针调用派生类函数82 什么函数不能声明为虚函数普通函数(非成员函数),构造函数,内联函数,静态成员函数,友元函数都不能声明为虚函数。83 举例谈一谈如何解决多继承中的二义性问题二义性解决方法: 1:虚基类2: 作用域限定符虚继承主要解决二义性的问题,并且为最远派生类提供唯一的基类成员,而不产原创 2017-08-10 21:51:36 · 254 阅读 · 0 评论 -
VS2010调试窗口一闪而过解决方法
1.若是C++文件,在程序最后写一句(return之前)添加:system("pause");2.若是C文件,首先在程序头添加头文件:#include"stdlib.h";然后在程序最后写一句(return之前)添加:system("pause")。方法二:1.右键单击当前工程-属性 2.选择配置属性-链接器-系统 3.更改系统选项中的“子系统”配置,选择下拉菜单的第一个“原创 2017-08-03 23:41:03 · 1256 阅读 · 0 评论 -
C++知识总结(19)
86 C++是如何实现代码的扩展性的?利用多态机制提高了代码的扩展性。87 虚函数是如何实现多态的 多态是指同一接口,对于不同的对象,可以有不同的执行结果。简单的说,就是用基类的引用指向子类的对象。 为什么要用多态呢?原因:我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态除了代码的复用性外,还原创 2017-08-12 13:06:05 · 277 阅读 · 0 评论 -
C++知识总结(20)
96编译型语言和解释型语言的区别关于“编译型语言”和“解释性语言”的区别编译型是一次性编译成“二进制”(都是变成二进制),以后用时不用再编译了解释性语言是边编译边执行,根据执行规则(脚本语言规则)来告诉计算机要作什么97 程序由源文件到可执行文件经过哪几步?分别做些什么1.编辑:也就是编写C/C++程序。2.预处理:相当于根据预处理指令组装新的C/C++程序。经过预处理,会原创 2017-08-12 13:06:19 · 209 阅读 · 0 评论 -
C++知识总结(21)
101. 标准库的六大组建分别是什么?有什么作用1、容器(Containers):各种数据结构,如Vector,List,Deque,Set,Map,用来存放数据,STL容器是一种Class Template,就体积而言,这一部分很像冰山载海面的比率。2、算法(Algorithms):各种常用算法如Sort,Search,Copy,Erase,从实现的角度来看,STL算法是一种Func原创 2017-08-12 13:06:32 · 240 阅读 · 0 评论 -
C++知识总结(22)
106. vector的优缺点优点:(1)不确定内存大小的数组的连续存储,可以像数组进行动态操作;(2)随机访问方便,即支持[ ]操作符和vector.at()(3)节省空间缺点:(1)在内部进行插入删除操作效率低(2)只能在vector的最后进行push和pop,不能在vector的头进行push和pop(3)当动态添加的数据超过vector默认分配的大小时要进行原创 2017-08-12 13:06:43 · 322 阅读 · 0 评论 -
c++面向对象
一、描述面向对象技术的基本概念面向对象是指按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的方法,包括类、对象、消息以及类的特性等方面的内容。类(class):具有相似的内部状态和运动规律的实体集合。类来自于人们认识自然、认识社会的过程。在这一过程中,人们主要使用两种方法:有特殊到一般的归纳法和一般到特殊的演绎法。在归纳过程中,从一个一原创 2017-08-05 23:50:55 · 641 阅读 · 0 评论 -
重载与重写(覆盖)的区别
1.重载是指子类改写父类的方法。重载是编写一个与已有函数同名但参数表不同的方法,具体特征如下:1)方法名必须相同2)参数列表必须不相同,与参数列表顺数无关3)返回值类型可不相同2.重写是指同一函数的不同版本之间参数不同。重写是派生类重写的虚函数,具体特征如下:1)只有虚方法和抽象方法才能被重写2)相同的函数名3)相同的参数列表4)相同的返回类型原创 2017-08-07 10:06:26 · 477 阅读 · 0 评论 -
C++知识总结(12)
51 建造者模式和工厂模式的区别? 工厂模式一般都是创建一个产品,注重的是把这个产品创建出来就行,只要创建出来,不关心这个产品的组成部分。从代码上看,工厂模式就是一个方法,用这个方法就能生产出产品。 建造者模式也是创建一个产品,但是不仅要把这个产品创建出来,还要关系这个产品的组成细节和组成过程。从代码上看,建造者模式在建造产品时,这个产品有很多方法,建造者原创 2017-08-10 16:45:29 · 190 阅读 · 0 评论 -
C++知识总结(11)
46 什么是STL?STL六大组件是什么及关系?什么是STL1、STL(Standard Template Library),即标准模板库,是一个高效的C++程序库。2、包含了诸多在计算机科学领域里常用的基本数据结构和基本算法。为广大C++程序 员们提供了一个可扩展的应用框架,高度体现了软件的可复用性3、从逻辑层次来看,在STL中体现了泛型化程序设计的思想(generic prog原创 2017-08-10 16:44:57 · 217 阅读 · 0 评论 -
C++知识总结(10)
42 如何调试内存错误?1.利用gdb逐步查找段错误: 2.分析Core文件3.段错误时启动调试4.4.利用backtrace和objdump进行分析 43 STL类库a) =,assign() //赋以新值 b) swap() //交换两个字符串的内容 c) +=,append(),push_back() //在尾部添加字符 d) insert()原创 2017-08-10 15:44:57 · 237 阅读 · 0 评论 -
多态 —基类指针
基类指针指向基类对象就能够使用基类的成员变量和函数,如果指向派生类对象时,就能够使用派生类的成员和函数。#include using namespace std;class People{public://People(){}People(char *name,int age);//void show(); 基类和派生类都不加virtual 执行出乱 、如果这里不加vi原创 2017-01-20 19:09:45 · 1007 阅读 · 0 评论 -
c++ 关键字static
static成员变量static变量属于类,只能在类外部初始化;static变量是几个对象共享使用,相当于全局变量;外部初始化的格式:int Student::m_total = 0;类型 类名::static变量 = 数值;static 成员的访问形式:1. 类名::static变量Student::m_total2.对象.(static 变量) st原创 2017-01-18 22:20:40 · 182 阅读 · 0 评论 -
new/delete与malloc/free的区别
在c++中,申请内存与释放动态内存,用二者都可以,并且存储方式相同,new与malloc申请内存都在堆中,操作系统无法自动回收,需要对应的delete与free来释放内存。c语言中需要头文件,new/delete是c++运算符。对于类的对象而言,malloc/free 无法满足动态对象的要求。具体而言有以下几个区别:1)new能够自动计算需要分配的内存,而malloc2)3原创 2017-08-09 14:11:56 · 527 阅读 · 0 评论 -
mysql数据库的简单操作
在虚拟机中的操作1. sqlite3 text.db(文件名) 没有则自动创建2. .tables 查看表3. 创建表create table student (ID INTERGER,name TEXT,sex TEXT,age INTEGER,primary key(ID)原创 2017-08-09 14:12:31 · 233 阅读 · 0 评论 -
C++知识总结(1)
1、C语言之父是谁?为什么要开发C语言?丹尼斯里奇C语言语法结构简洁精妙,功能强大,便于描述算法。‚ C语言能深入系统底层。我们所知道的操作系统Windows、Unix、Linux、Mac、OS/2,都是用C语言写的。ƒ很多新的语言都衍生自C语言,如C++、Java、C#、J#、Perl。 2、C语言和汇编语言的区别·汇编:效率高,对硬件的可操控性更强,体积小,不易维原创 2017-08-09 20:36:46 · 208 阅读 · 0 评论 -
c++知识总结(2)
6、内存分配的形式有哪些?内存分配有三种方式:一:从全局存储区域分配:这时内存在程序编译阶段就已经分配好,该内存在程序运行的整个周期都有效,如:全局变量、static静态变量。二:从栈区分配:在执行函数的时候,函数中的局部变量的存储单元都可以从栈中分配,函数执行结束后这些存储单元都会被自动释放,实现从栈中分配存储单元运算操作内置于处理器的指令集中,效率很高但是分配的内存容量有限。原创 2017-08-09 20:38:28 · 217 阅读 · 0 评论 -
C++知识总结(3)
11、全局变量与静态变量的区别全局变量与全局静态变量的区别: (a)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。 (b)若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。 (c)具有外部链接的静态;可以在所有源文件里调用;除了本文件,其他文件可以通过ext原创 2017-08-09 20:59:42 · 189 阅读 · 0 评论 -
C++知识总结(4)
16、引用和指针的区别相同点: 都是地址的概念; 指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名。 不同点: 指针是一个实体,而引用仅是个别名; 引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终”,指针可以“见异思迁”; 引用没有const,指针有const,const的指针不可变; 引用不能原创 2017-08-09 22:51:58 · 189 阅读 · 0 评论 -
C++知识总结(5)
21.new/delete 与malloc/free 的区别1. new/delete是C++的操作符,malloc/free是C/C++标准库函数。2. new分为两步的:第一步是申请内存,第二步则是调用构造函数初始化对象。同样,在调用delete的时候,需要先调用析构函数,然后再回收堆内存。malloc只会根据参数分配内存,默认返回指向void*的指针,同样free释放malloc分配原创 2017-08-09 23:16:49 · 198 阅读 · 0 评论 -
C++知识总结(6)
26 extern关键字的作用?适用场合?使用注意事项?extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 27 const关键字的作用?适用场合?使用注意事项?(1)在C语言中用const去修饰一个变量,表示这个变量是只读的,不可通过显式的调用a去修改a的值,并且此原创 2017-08-09 23:17:01 · 208 阅读 · 0 评论 -
C++知识总结(7)
31 inline关键字的作用?适用场合?使用注意事项?1、在C++中,在类的内部定义了函数体的函数,被默认为是内联函数。而不管是否有inline关键字。2、如果函数的定义放在类的外部,函数定义前必须加inline才能成为内联函数,而函数声明可以加inline也可以不加3、关键字inline 必须与函数定义体放在一起才能使函数成为内联,仅将inline 放在函数声明前面不起任何作用。原创 2017-08-09 23:22:48 · 237 阅读 · 0 评论 -
C++知识总结(8)
34 C与C++变量初始化有什么不同1)在C语言中全局变量存放在全局数据区,由编译器建立,如果在定义的时候不做初始化,系统会将其自动初始化,数值型为0,字符型和指针变量会自动赋值为NULL。静态变量和全局变量类似。而非静态局部变量不做初始化,它的值将是随机数。2)在C++中,如果在一个文件中定义了int a=5,要在另一个文件中定义int b = a的话,前面必须对a进行声明:exter原创 2017-08-09 23:23:37 · 224 阅读 · 0 评论 -
C++知识总结(9)
41 函数模板与类模板的使用 函数模板是一种不说明某些参数的数据类型的函数,模板定义以关键字template开头,关键字class(或typename)表示其后的标识符T是模板参数(类型参数),用来指定函数模板abs()中参数val的数据类型,随后是函数模板abs()的定义。定义函数模板时,参数化的数据类型T可以用来声明函数的参数和返回值,在函数体中还可以用来声明工作变量。原创 2017-08-10 09:25:02 · 207 阅读 · 0 评论 -
关键字volatile有什么含义
一个定义为volatile的变量可能会有意想不到的改变,这样编译器就不会去假设这个变量的值了,精确的说,就是优化器在用到这个变量时必须每次都小心的重新读取这个值,而不是使用保存在寄存器里的备份。下面是volatile变量的例子:1)并行设备的寄存器;2)一个中断服务子程序中会访问到非自动变量;3)多线程应用中原创 2017-08-07 10:07:04 · 539 阅读 · 0 评论